gpt4 book ai didi

c++ - 对派生类 C++ 使用不同的基构造函数

转载 作者:太空宇宙 更新时间:2023-11-04 16:30:57 25 4
gpt4 key购买 nike

根据我的理解,以下代码将按此顺序执行:

  1. 派生的构造函数被调用。
  2. 基础对象是使用默认基础构造函数构造的。
  3. 执行派生构造函数的主体。

如果是这样,成员z不就被赋值了两次吗?

class base {
public:
int x, y, z;
base() {x = 0; y = 0; z = 0;};
};

class derived : public base {
public:
derived() {z = 5;};
};

是否有更有效的方法来创建类“派生”的对象,以便它使用不同的构造函数,在本例中,该构造函数只会为成员 x 和 y 分配一个值,而让 z 在 derived( )?

最佳答案

是的,有一种更高效的方式,但是会占用更多的代码(从而增加维护开销)。

class base {
public:
int x, y, z;
// Default constructor
base() {x = 0; y = 0; z = 0;};
// Constructor to be called if you want to override the z value
base(int zValue) { x=0; y=0; z=zValue; };
};

class derived : public base {
public:
derived() : base(5) {};
};

关于c++ - 对派生类 C++ 使用不同的基构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7061345/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com