gpt4 book ai didi

c++ - 如何在派生类构造函数中初始化基类成员变量?

转载 作者:IT老高 更新时间:2023-10-28 11:55:28 25 4
gpt4 key购买 nike

为什么我不能这样做?

class A
{
public:
int a, b;
};

class B : public A
{
B() : A(), a(0), b(0)
{
}

};

最佳答案

您不能在 B 中初始化 ab,因为它们不是 B 的成员。它们是 A 的成员,因此只有 A 可以初始化它们。您可以将它们公开,然后在 B 中进行赋值,但这不是推荐的选项,因为它会破坏封装。相反,在 A 中创建一个构造函数以允许 B(或 A 的任何子类)初始化它们:

class A 
{
protected:
A(int a, int b) : a(a), b(b) {} // Accessible to derived classes
// Change "protected" to "public" to allow others to instantiate A.
private:
int a, b; // Keep these variables private in A
};

class B : public A
{
public:
B() : A(0, 0) // Calls A's constructor, initializing a and b in A to 0.
{
}
};

关于c++ - 如何在派生类构造函数中初始化基类成员变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7405740/

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