链接:
https://www.nowcoder.com/questionTerminal/0dc754158944469b959135ea3e1fdeb0
来源:牛客网
来源:牛客网
假定CSomething是一个类,执行下面这些语句之后,内存里创建了____个CSomething对象。
1
2
3
4
5
6
7
|
CSomething a();
CSomething b(2);
CSomething c[3];
CSomething &ra = b;
CSomething d=b;
CSomething *pA = c;
CSomething *p =
new
CSomething(4);
|
链接:https://www.nowcoder.com/questionTerminal/0dc754158944469b959135ea3e1fdeb0
来源:牛客网
//个人觉得应该是6个。
CSomething a();// 没有创建对象,这里不是使用默认构造函数,而是定义了一个函数,在C++ Primer393页中有说明。
只是个函数声明
CSomething b(2);//使用一个参数的构造函数,创建了一个对象。
CSomething c[3];//使用无参构造函数,创建了3个对象。
CSomething &ra=b;//ra引用b,没有创建新对象。
CSomething d=b;//使用拷贝构造函数,创建了一个新的对象d。
CSomething *pA = c;//创建指针,指向对象c,没有构造新对象。
CSomething *p = new CSomething(4);//新建一个对象。
//综上,一共创建了6个对象。个人理解,如有错误,还请大神指出。
注意区别:
CSomething a();
CSomething a;
前者是一个函数的声明,与默认构造函数区分;//返回类型为CSomething,形参表为空
后者是一个对象的定义;