最近经常在选择题里碰到问:下面程序的类中创建了几个对象的问题,开始做题很头疼,后来稍微总结了一下,发现也并不难。
这可能只是一部分,之后有其他类型还会继续更新~
或者大家碰到的其他问题,也可以留言给我,一起讨论咯
首先,大家都知道构造函数和拷贝构造函数会为类创建对象。
1.构造函数很好辨认,类名 对象名;
即可创建对象。对构造函数有其他疑惑的宝宝可以参考前面的博客:https://blog.csdn.net/ly_6699/article/details/87870429。
2.调用拷贝构造函数的情况:
a.用一个对象去初始化同类型的另一个新对象
b.函数的形参对象调用函数进行形参和实参结合时
c.函数的返回值是类的对象,函数执行返回调用时
d.当被赋值对象不存在时,将类的对象进行赋值
例如:假设C 是已经写好的一个类,则下面程序一共创建了多少个C对象?
C a(); //此处表示对函数a的声明,不创建对象
C b(2); //使用带参数的构造函数创建了一个对象
C c[3]; //使用无参构造函数,创建了三个对象
C &r = b; //r 引用b,没有创建新对象
C d = b; //使用拷贝构造函数创建了一个新对象
C *p = c; //创建了一个指针指向对象c,没有创建新对象
C *p = new c(4); //用new 新建了一个对象
注意:这里()和 [ ]的作用不同。
通过()赋值,通过[]申请空间。