标签:amp com 学习记录 obj const关键字 引用 出现 out 定义
class A{
private:
double real,imag;
public:
A(double r,double i);
A(double r);
A(A c1,A c2);
};
A::A(double r,double i)
{
real=r;imag=i;}
A::A(double r)
{real=r,imag=0;}
A::A(A c1,A c2)
{real=c1.real+c2.real;
imag=c1.imag+c2.imag;}
A c1(3),c2(1,0),c3(c1,c2)//对应的real和image:c1={3,0},c2{1,0},c3={4,0}
class Test{
public:
Test(int n){}//(1)
Test(int n,int m){}//(2)
Test(){}//(3)
};
Test array1[3]={Test(1),Test(1,2)};//三个元素分别用(1),(2),(3)初始化
Test *p[3]={new Test(4),new Test(1,2)};//只生成两个对象!,这里只开了两个内存,剩下一个指针指向未知
X::X(X&)
或X::X(const X&)
,二者选一,常用后面一种complex c2(c1);
与complex c2=c1;
等价,为初始化语句,非赋值语句,此时复制构造函数都起作用class A
{
public:
A(){};
A(A&a){
cout<<"copy"<<endl;
}
};
void Func(A a1){}
int main(){
A a2;
Func(a2);
return 0;
}
最终程序输出“copy”,此时就会出现形参未必等于实参的情况。
class A
{
public:
int v;
A(int n){v=n;}
A(const A &a){
v=a.v;
cout<<"copy"
}
};
A Func(){
A b(4);
return b;}
int main(){
cout<<Func().v<<endl;
return 0;
}
则输出的是:copy 4
void fun(A obj_){}
cout<<"fun"<<endl;
}
标签:amp com 学习记录 obj const关键字 引用 出现 out 定义
原文地址:https://www.cnblogs.com/2002ljy/p/12248095.html