21xrx.com
2025-03-26 11:39:44 Wednesday
文章检索 我的文章 写文章
C++继承构造函数
2023-07-05 10:29:49 深夜i     21     0
C++ 继承 构造函数

C++是一门流行的面向对象程序设计语言,其中面向对象编程中最重要的一个概念是继承。继承是指一个类可以从另一个类中继承属性和方法,这意味着子类可以重用父类的代码并添加新的代码。在C++中,子类继承父类的构造函数是一种很重要的特性,本文将介绍C++继承构造函数的原理和应用。

在C++中,如果子类没有显式地定义构造函数,则会自动继承父类的构造函数。这意味着子类对象可以使用父类的构造函数进行初始化。下面是一个简单的示例代码:

class Shape {
public:
  Shape()
    cout << "Shape constructor called" << endl;
  
};
class Circle : public Shape {
public:
  double radius;
  Circle(double r)
    cout << "Circle constructor called" << endl;
    radius = r;
  
};
int main() {
  Circle c(5.0);
  return 0;
}

在这个例子中,我们定义了一个Shape类和一个Circle类。Circle类继承Shape类,并且定义了一个半径属性。Circle类定义了一个带有一个double类型参数r的构造函数,用于初始化半径属性。正如我们所看到的,Circle对象的构造函数首先打印“Shape constructor called”,然后再打印“Circle constructor called”。这证明了Circle对象使用了Shape类的构造函数进行初始化。

然而,我们也可以在子类的构造函数中显示调用父类的构造函数,这样我们就可以向父类传递参数。下面是一个示例代码:

class Shape {
public:
  double width;
  double height;
  Shape(double w, double h)
    width = w;
    height = h;
    cout << "Shape constructor called" << endl;
  
};
class Rectangle : public Shape {
public:
  Rectangle(double w, double h) : Shape(w, h)
    cout << "Rectangle constructor called" << endl;
  
};
int main() {
  Rectangle r(5.0, 10.0);
  return 0;
}

在这个例子中,我们定义了一个Shape类和一个Rectangle类。Shape类定义了一个带有两个double类型参数w和h的构造函数,使用这两个参数来初始化width和height属性。Rectangle类继承Shape类,并且定义了一个带有两个double类型参数w和h的构造函数,该构造函数首先调用Shape类的构造函数来初始化width和height属性,然后再打印“Rectangle constructor called”。

继承构造函数是C++面向对象编程中一个很重要的特性,它可以帮助我们更好地设计和组织代码。我们可以使用继承构造函数来重用父类的代码,向父类传递参数,这在大型项目中特别有用。但需要注意的是,如果父类的构造函数带有参数,则必须在子类中显示调用。否则,编译器将自动调用一个无参的基类构造函数。

  
  

评论区