21xrx.com
2024-12-22 21:11:22 Sunday
登录
文章检索 我的文章 写文章
C++子类构造函数
2023-07-07 01:05:53 深夜i     --     --
C++ 子类 构造函数 继承 父类

C++中,子类的构造函数可以继承父类的构造函数。子类对象创建时,会调用子类的构造函数。如果子类没有定义构造函数,则会默认调用父类的构造函数。如果子类定义了构造函数,那么子类会先调用自己的构造函数,在构造函数中再调用父类的构造函数。

在子类构造函数中,可以使用成员变量列表来初始化成员变量,也可以在构造函数体中初始化成员变量。成员变量列表用冒号分隔,后面跟着一组初始化表达式,每个表达式之间用逗号分隔。例如:


class Base {

public:

  Base(int value) : m_value(value) {}

protected:

  int m_value;

};

class Derived : public Base {

public:

  Derived(int value, int derivedValue) : Base(value), m_derivedValue(derivedValue) {}

private:

  int m_derivedValue;

};

在这个示例中,子类Derived继承了父类Base的构造函数,同时定义了一个自己的构造函数。在Derived构造函数中,使用成员变量列表初始化了父类Base的m_value成员变量,同时也初始化了Derived的m_derivedValue成员变量。

需要注意的是,如果父类的构造函数是没有参数的,默认构造函数,而子类又没有显式地调用父类构造函数,则会默认调用父类的默认构造函数。如果父类没有默认构造函数,则子类的构造函数必须显式地调用父类的构造函数。

子类构造函数也可以使用父类的成员函数。例如:


class Base {

public:

  void print() {

    std::cout << "Base::print()" << std::endl;

  }

};

class Derived : public Base {

public:

  Derived(int value) : m_value(value) {}

  void printDerived() {

    Base::print();

  }

private:

  int m_value;

};

在这个示例中,子类Derived定义了一个自己的printDerived函数,其中调用了父类Base的print函数。

总的来说,在C++中,子类构造函数可以继承父类的构造函数,也可以定义自己的构造函数。在构造函数中可以使用成员变量列表来初始化成员变量,也可以在构造函数体中初始化成员变量。在子类中也可以使用父类的成员函数。在子类构造函数中,需要特别注意调用父类构造函数的方式,以及默认构造函数和没有默认构造函数的情况。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复