foc*_*ard 1 c++ constructor composition
我正在学习c ++教程并且很难理解以下代码的一部分(请参阅注释部分):
#include<iostream>
using namespace std;
class A
{
public:
A(A&src)
{
cout<<"copying A..."<<endl;
}
A(void){}
void Do(void)
{
cout<<"A is doing something"<<endl;
}
};
class B
{
public:
B(B&src)
{
cout<<"copying B..."<<endl;
}
B(void){}
void Do(void)
{
cout<<"B is doing something"<<endl;
}
};
class Compo
{
public:
Compo(Compo &src):f1(f1),f2(f2)//???
{
cout<<"Copying Compo..."<<endl;
}
Compo(void){}
A f1;
B f2;
};
int main(void)
{
Compo co1;
Compo co2=co1;
co2.f1.Do();
co2.f2.Do();
}
Run Code Online (Sandbox Code Playgroud)
那么编译器如何知道哪个f1/f2属于哪个Compo?有没有办法让它更明确?
谢谢您的帮助
它没有,你正在初始化f1自己,这不会带来任何好处.你要:
Compo(const Compo &src):f1(src.f1),f2(src.f2)//???
{
cout<<"Copying Compo..."<<endl;
}
Run Code Online (Sandbox Code Playgroud)
另一个打开警告的好例子.如果你已经打开它们,请注意它们.
| 归档时间: |
|
| 查看次数: |
342 次 |
| 最近记录: |