我已经搜索了但仍然没有得到简单和正确的答案,下面是我的代码。
#include <iostream>
using namespace std;
class Parent
{
private:
int a;
public:
Parent():a(3) { cout << a; }
};
int main()
{
Parent obj;
return 0;
}
你能添加额外的代码行,可以在构造函数之前证明或显示初始化列表调用吗?
答案 0 :(得分:3)
我会稍微修改你的代码:
#include <iostream>
using namespace std;
class Parent
{
public:
int a;
public:
Parent():a(3){
a = 4;
}
};
int main()
{
Parent obj;
cout << obj.a;
return 0;
}
输出为4
,因此a
已初始化为3
,然后已分配4
。
答案 1 :(得分:1)
只需添加具有构造函数的数据成员即可打印内容。例如:
#include <iostream>
using namespace std;
struct Data {
Data(int a) {
cout << "Data constructor with a=" << a << endl;
}
};
class Parent
{
private:
Data a;
public:
Parent():a(3){
cout << "Parent constructor" << endl;
}
};
int main()
{
Parent obj;
return 0;
}
输出:
Data constructor with a=3
Parent constructor
结论:在Data
的构造函数体之前调用了Parent
构造函数。
答案 2 :(得分:1)
在此程序中,您没有获得变量“a”值10,这是在构造函数方法之前分配的。
#include<iostream>
using namespace std;
class Test
{
public:
int a,b;
public:
Test():a(b){
b=10;
}
};
int main()
{
Test obj;
cout<<"a :"<<obj.a<<" b:"<<obj.b;
return 0;
}
答案 3 :(得分:0)
最好用多个类显示:
#include <iostream>
class A
{
public:
A()
{
std::cout << "Hello World!" << std::endl;
}
};
class B
{
private:
A* a;
public:
// Call a's constructor
B():a(new A)
{
// Some code
}
~B()
{
delete a;
}
};
int main()
{
B obj;
return 0;
}