早教吧 育儿知识 作业答案 考试题库 百科 知识分享

拷贝构造函数的几点疑问拷贝构造函数的原型是A(constA&a);(1)如果只有类型为A(Aa)的构造函数那么Aa(b);究竟会调用默认的拷贝构造函数还是A(Aa)这个函数?Aa=b;呢?(2)如果显式定义了

题目详情
拷贝构造函数的几点疑问
拷贝构造函数的原型是A(const A &a);
(1)如果只有类型为A(A a)的构造函数 那么A a(b);究竟会调用默认的拷贝构造函数还是
A(A a)这个函数?A a=b;呢?
(2)如果显式定义了拷贝构造函数(1)中的问题又是怎样的答案?
(3)仅仅就拷贝构造函数而言,如果A前面不加const有关系吗,这样的话还会算作拷贝构造函数吗?
▼优质解答
答案和解析
A::A(A a) 非法复制构造函数。。。。。
A::A(const A & a) 和A::A(A & a)的区别是:
如果只有A::A(A & a) 则下面的代码错误:
const A aa;
A noconst;
A bb = aa; //非法,没有适当的复制构造函数,类型不匹配.
A cc = noconst; //可以,类型匹配
如果是A::A(const & a);
则:
const A aa;
A noconst;
A bb = aa; //可以.
A cc = noconst; //可以,A & 转换为const A &
如果两者都有(即同时又A(cosnt A &)和A(A &))和只有A(const A &)是一样的。