gpt4 book ai didi

c++ - 使用具有继承性的构造函数基类和成员初始值设定项列表

转载 作者:行者123 更新时间:2023-11-28 06:30:01 26 4
gpt4 key购买 nike

我有一个问题,关于如何为从基类的构造函数继承的派生类的构造函数使用初始化列表。

这是有效的代码:

class base {

public:
base():x(0) {}
base(int a):x(a) {}

private:
int x;
};

class derived : public base {

public:
derived():base():y(0) { y=0; }
derived(int a, int b):base(a) { y=b; }

private:
int y;
};

但是,我想直接使用成员初始化列表来初始化变量,这会导致错误:

class base {

public:
base():x(0) {}
base(int a):x(a) {}

private:
int x;
};

class derived : public base {
public:
//derived():base():y(0) {} //wrong
//derived(int a, int b):base(a):y(b) {} //wrong
derived():base(), y(0) {} // corrected
derived(int a, int b): base(a), y(b) {} //corrected

private:
int y;
};

从另一个构造函数继承的构造函数使用初始化列表的正确语法是什么?

谢谢:)

最佳答案

正如 Dieter 所指出的,您可以轻松地在一个构造函数中包含多个初始化器,它们只需用逗号 (,) 而非列 (:) 分隔即可。

你派生的类应该是:

class derived : public base {
public:
derived():base(),y(0) {}
derived(int a, int b):base(a),y(b) {}

private:
int y;
};

关于c++ - 使用具有继承性的构造函数基类和成员初始值设定项列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27766281/

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