Call base's default constructor automatically : base class « Class « C++ Tutorial






#include <iostream> 
#include <cstring> 
using namespace std; 
 
class Shape { 
  // private 
  double width; 
  double height; 
public: 
 
  Shape() { 
    width = height = 0.0; 
  } 
 
  Shape(double w, double h) { 
    width = w; 
    height = h; 
  } 
 
  Shape(double x) { 
    width = height = x; 
  } 
 
  void display() { 
    cout << "Width and height are " << width << " and " << height << "\n"; 
  } 
 
  double getWidth() { return width; } 
  double getHeight() { return height; } 
  void setWidth(double w) { width = w; } 
  void setHeight(double h) { height = h; } 
}; 
 
class Triangle : public Shape { 
  char style[20]; // now private 
public: 
 
  /* A default constructor. This automatically invokes 
     the default constructor of Shape. */ 
  Triangle() { 
    strcpy(style, "unknown"); 
  } 
 
  Triangle(char *str, double w, double h) : Shape(w, h) { 
    strcpy(style, str); 
  } 
   
  Triangle(double x) : Shape(x) { 
    strcpy(style, "isosceles");  
  } 
 
  double area() { 
    return getWidth() * getHeight() / 2; 
  } 
 
  void showStyle() { 
    cout << "Triangle is " << style << "\n"; 
  } 
}; 
 
int main() { 
  Triangle t1; 
  Triangle t2("right", 8.0, 12.0); 
  Triangle t3(4.0); 
 
  t1 = t2; 
 
  cout << "Info for t1: \n"; 
  t1.showStyle(); 
  t1.display(); 
  cout << "Area is " << t1.area() << "\n"; 
 
  t2.showStyle(); 
  t2.display(); 
  cout << "Area is " << t2.area() << "\n"; 
 
  t3.showStyle(); 
  t3.display(); 
  cout << "Area is " << t3.area() << "\n"; 
 
  return 0; 
}
Info for t1:
Triangle is right
Width and height are 8 and 12
Area is 48
Triangle is right
Width and height are 8 and 12
Area is 48
Triangle is isosceles
Width and height are 4 and 4
Area is 8








9.17.base class
9.17.1.Add a constructor to Base class
9.17.2.Add a overloaded constructor to base class
9.17.3.Call base's default constructor automatically
9.17.4.Call base virtual function explicitly
9.17.5.Virtual base classes
9.17.6.Pass parameter to two base classes