1.题目
假定CSomething 是一个类,执行下面这些语句时,内存中创建了多少个CSomething对象?
CSomething a();
CSomething b(2);
CSomething c[3];
CSomething &ra = b;
CSomething d = b;
CSomething *pa = c;
CSomething *p = new CSomething(4);
2.思路
牛客网山给的答案是8个,但是正确答案应该是6个(感谢xjp大神)。解析如下:
CSomething a(); //没有创建对象,而是定义了一个函数,不使用默认构造函数
CSomething b(2); //创建了一个含有参数的对象
CSomething c[3]; //创建了3个不含参数的对象
CSomething &ra = b; //ra引用b,并没有创建对象
CSomething d = b; //调用默认的拷贝构造函数创建了一个对象,将b的值给d
CSomething *pa = c; //一个指向c的指针,并没有创建对象。
CSomething *p = new CSomething(4); //新建了一个对象。
CSomething a();
CSomething b(2);
CSomething c[3];
CSomething &ra = b;
CSomething d = b;
CSomething *pa = c;
CSomething *p = new CSomething(4);
CSomething b(2);
CSomething c[3];
CSomething &ra = b;
CSomething d = b;
CSomething *pa = c;
CSomething *p = new CSomething(4);