如果一个类重载了=,那么执行 classname p=q; 调用的是拷贝构造函数还是重载=?
class A
{
int k;
public:
A(int k=0):k(k){}
explicit A(const A &temp):k(temp.k){}
A operator=(const A &temp)
{
return (A(temp.k));
}
};
int main()
{
A a(20);
A b=a;
}
会出错,说明调用的还是拷贝构造函数。
重载的=是用在 p=q 时的。而且operator=中也用到了拷贝构造函数的。
posted on 2006-09-02 19:06
4346 阅读(223)
评论(0) 编辑 收藏 引用