让我们讨论下一个代码示例:
class A
{
public:
int a;
};
class B:public A
{
public:
int a;
};
int main()
{
B b;
std::cout << b.a;
system("pause");
return(0);
}
为什么如果我这样写,那么它不能编译,并给我错误。
但是如果我向 B 类添加一个构造函数,如下所示:
B()
{
// An empty constructor!!!
}
然后它在屏幕上打印一个垃圾值(“a”变量值)。 如果我像这样编写类,为什么我不需要任何构造函数:
class B:public A
{
public:
int a = 5; // 5 is just one of many possibilities...
};
在这种情况下,5 将打印在屏幕上。
最佳答案
通过执行以下任一操作,构造函数可用于为数据成员分配或初始化值:
B()
:a(5) // intialize a with value 5
{
}
或
B()
{
a = 5; // assign a with value 5
}
第二个用垃圾值初始化 a,然后将 5 赋给它。
数据成员在构造函数体执行之前被初始化。
And why I dont need any constructor if im writing the class like this:
并不是说你不需要构造函数,只是它已经有了一个值。
关于c++ - 试图用我对 CPP 中构造函数的理解来理解,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41789820/