c++中,为什么在调用赋值操作符时同时会调用复制构造函数?
例如定义了类classNoNmae,同时在类中定义了复制构造函数,默认构造函数和赋值操作符,NoNamea,b;a=b;在执行a=b;语句时同时调用了赋值操作符和复制构造...
例如定义了类 class NoNmae ,同时在类中定义了复制构造函数,默认构造函数 和 赋值操作符,
NoName a, b;
a=b;
在执行a=b;语句时同时调用了赋值操作符和复制构造函数,为什么不是只调用赋值操作符呢? 展开
NoName a, b;
a=b;
在执行a=b;语句时同时调用了赋值操作符和复制构造函数,为什么不是只调用赋值操作符呢? 展开
2个回答
展开全部
明明没有调用复制构造函数。编译运行以下测试程序:
#include <iostream>
#include <cstdlib>
using namespace std;
class A{
public:
A(){cout<<"A::A()"<<endl;}
A(A&){cout<<"A::A(A&)"<<endl;}
A& operator=(A&){cout<<"operator=(A&)"<<endl;return *this;}
};
int main()
{
A a,b;
a=b;
system("pause");
return 0;
}
结果是(在Dev-Cpp 4.9.9.2上编译的结果):
A::A()
A::A()
operator=(A&)
证明没有调用A::A(A&)
追问
你好,我的程序私信给你了,是不是我的程序有问题
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询