证明构造函数 C++ 之前调用初始化列表的任何示例
Any Example that Prove Initializer List Call before Constructor C++
我已经搜索过但仍然没有得到简单和正确的答案,下面是我的代码。
#include <iostream>
using namespace std;
class Parent
{
private:
int a;
public:
Parent():a(3) { cout << a; }
};
int main()
{
Parent obj;
return 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;
}
简单地添加数据成员,它有构造函数,打印一些东西。示例:
#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
的构造函数体之前被调用。
您在此程序中没有获得变量 "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;
}
我会稍微修改你的代码:
#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
。
我已经搜索过但仍然没有得到简单和正确的答案,下面是我的代码。
#include <iostream>
using namespace std;
class Parent
{
private:
int a;
public:
Parent():a(3) { cout << a; }
};
int main()
{
Parent obj;
return 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;
}
简单地添加数据成员,它有构造函数,打印一些东西。示例:
#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
的构造函数体之前被调用。
您在此程序中没有获得变量 "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;
}
我会稍微修改你的代码:
#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
。