21xrx.com
2024-12-28 10:25:06 Saturday
登录
文章检索 我的文章 写文章
C++继承中的构造函数初始化
2023-07-03 09:15:56 深夜i     --     --
C++ 继承 构造函数 初始化

在C++继承中,当一个派生类继承自一个基类时,派生类中的构造函数需要初始化基类中的成员变量,以确保派生类对象中的基类部分正确地构造。下面介绍几种构造函数初始化的方式。

1. 使用初始化列表

初始化列表是一种最常用的初始化方式,它在构造函数的参数列表后使用冒号来表示,接着是用逗号分隔的初始化表达式列表。例如,下面的代码展示了如何在派生类构造函数中初始化基类成员变量:


class Base{

public:

  Base(int x):m_x(x){}

private:

  int m_x;

};

class Derived:public Base{

public:

  Derived(int x, int y):Base(x),m_y(y){}

private:

  int m_y;

};

2. 在函数体中初始化

除了使用初始化列表外,也可以在派生类构造函数的函数体中初始化基类成员变量。然而,这种方法很少使用,因为它会在构造函数体中对基类成员变量进行额外的初始化。


class Derived:public Base{

public:

  Derived(int x, int y):m_y(y)

    m_x = x; //在构造函数体中初始化基类成员变量

  

private:

  int m_y;

};

3. 基类默认构造函数

如果基类中没有带参数的构造函数,那么可以省略派生类构造函数中的初始化部分。因为在调用基类默认构造函数时,基类成员变量会自动被初始化为默认值。


class Base{

public:

  Base(){}

private:

  int m_x = 0; //m_x会被初始化为0

};

class Derived:public Base{

public:

  Derived(int y):m_y(y){}

private:

  int m_y;

};

在继承中,除了正确地初始化基类成员变量,还需要遵循其他规则,例如:不要在派生类中直接访问基类私有成员变量和函数,正确地使用虚函数等等。如果遵循这些规则,C++继承机制可以使代码更加简洁和易维护。

  
  

评论区

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