为什么要调用构造函数H1
和H2
?我能说明理由吗?
class A
{
public:
int a;
char b;
A()
{
a = 0;
b = '\n';
}
A(int a)
{
cout << "H1";
}
A(char c)
{
cout << "H2";
}
};
int main()
{
int a = 10;
char c = 'h';
A ob1 = a;
ob1 = c;
}
答案 0 :(得分:4)
A ob1 = a;
这会从A
值初始化int
类型的对象。这使用构造函数A(int)
,打印H1
。
ob1 = c;
这会为对象分配char
值。由于没有合适的赋值运算符A::operator=(char)
,它可以直接赋值,它分两个阶段完成:
A
值char
类型的临时对象
ob1
。第一阶段使用构造函数A(char)
初始化临时,打印H2
。
因此,输出为H1H2
。
答案 1 :(得分:0)
class A {
public:
int a;
char b;
A() {
a=0;
b='\n';
}
A(int a) {
cout<<"H1";
}
A(char c) {
cout<<"H2";
}
};
int main() {
int a=10;
char c='h';
A ob1=a; // calls A(int a) because a is typeof int
ob1=c; // calls A(char c) because c is typeof char
}