首页 > 试题广场 >

What’s the output of&n...

[单选题]
下面代码段的输出为()
#include "stdio.h"
class A {
public:
    A() {
        printf("1");
    }
    A(A &a) {
        printf("2");
    }
    A &operator=(const A &a) {
        printf("3");
        return *this;
    }
};
int main()
{
    A a;
    A b = a;
}


  • 3
  • 5
  • 6
  • 12
?????????
发表于 2020-09-09 00:32:28 回复(0)
A a; // 调用构造函数,打印输出1
A b = a; // 调用复制构造函数,打印输出2

发表于 2020-10-06 00:04:54 回复(0)
A a;   //打印1
A b=a;//打印2

如果是
A a;
A b;
b=a;
应该打印113吧


发表于 2020-09-19 15:23:50 回复(0)
注意:拷贝构造函数是在对象被创建时调用的,而赋值构造函数只能被已经存在了的对象调用
发表于 2022-03-24 10:03:19 回复(0)
 A b = a; 相当于带参数的初始化, 不是先不带参数的创建b, 然后拷贝a; 显然前者更方便简洁
发表于 2022-03-04 10:13:27 回复(0)
对于一个类X, 如果一个构造函数的第一个参数是下列之一:
a) X&
b) const X&
c) volatile X&
d) const volatile X&
且没有其他参数或其他参数都有默认值,那么这个函数是拷贝构造函数.
发表于 2021-08-22 18:11:07 回复(0)