C++类的用法
#include<iostream>usingnamespacestd;classA{intn;public:A(){};A(inta){n=a;cout<<"A(int...
#include<iostream>
using namespace std;
class A{
int n;
public:
A(){};
A(int a) {n=a; cout<<"A(int)\n";}
A(const A& rhs){ n=rhs.n; cout<<"A(const A&rhs)\n";}
A operator+(const A& rhs)
{ cout<<"+\n"; return A(n+rhs.n);}
};
int main()
{
A a=A(1);
A b=a+1;
}
为什么A a=A(1) 没有调用copy构造函数啊
同理A b=a+1也没有 展开
using namespace std;
class A{
int n;
public:
A(){};
A(int a) {n=a; cout<<"A(int)\n";}
A(const A& rhs){ n=rhs.n; cout<<"A(const A&rhs)\n";}
A operator+(const A& rhs)
{ cout<<"+\n"; return A(n+rhs.n);}
};
int main()
{
A a=A(1);
A b=a+1;
}
为什么A a=A(1) 没有调用copy构造函数啊
同理A b=a+1也没有 展开
1个回答
展开全部
拷贝构造函数的参数是本类的对象,如:
A a=A(1)
A b(a); //这个才调用拷贝构造函数,参数是本类型对象,如A a
A a=A(1)
A b(a); //这个才调用拷贝构造函数,参数是本类型对象,如A a
追问
A a=A(1)没有调用
A b(1);
A a=b;
也会调用
追答
刚查了一些资料:
在C++中,下面三种对象需要调用拷贝构造函数(有时也称“复制构造函数”):
1) 一个对象作为函数参数,以值传递的方式传入函数体;
2) 一个对象作为函数返回值,以值传递的方式从函数返回;
3) 一个对象用于给另外一个对象进行初始化(常称为复制初始化);
A a=b; //是第3中情况,一个对象用于给另外一个对象进行初始化(常称为复制初始化)
拷贝构造函数:
http://baike.so.com/doc/498773.html
不要意思啊!
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询