gpt4 book ai didi

c++ - 从派生类访问基类中的 protected 成员

转载 作者:行者123 更新时间:2023-11-30 00:50:34 25 4
gpt4 key购买 nike

我有以下代码片段:

const int DATE_LENGTH = 6;

class BaseClass {
protected:
int date[DATE_LENGTH];
int year;
public:
BaseClass(){}
BaseClass(int *d) {
for (int i = 0; i < DATE_LENGTH; i++) { date[i] = d[i];}
year = 1900 + date[4] * 10 + date[5];
}
void printYear() {
cout << year << endl;
}
};

class DerivedClass : public BaseClass {
public:
DerivedClass() {}
void printYear() {
cout << year << endl;
}
};

int main(int argc, char *argv[]) {
int dob[] = {1, 6, 1, 0, 9, 0};
BaseClass base(dob);
base.printYear(); // prints 1990

DerivedClass derived;
derived.printYear(); // prints 1439156608
}

我无法理解为什么派生类中 printYear() 的输出是乱码。我是否漏掉了一些非常明显的东西?

如有任何帮助,我们将不胜感激!

最佳答案

您的程序有未定义的行为。您正在使用的 DerivedClass 的默认构造函数不会初始化 year 成员。

如果您想初始化基础成员,可以通过调用适当的基础构造函数或直接分配值来实现。

DerivedClass() { year = 1999; }

关于c++ - 从派生类访问基类中的 protected 成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24600970/

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