一些代码:
class CInner {
public:
CInner( const CInner& another ) { //impl here }
private:
// some member variables
}
class COuter {
public:
COuter( const CInner& inner ) : inner( inner ) {}
private:
CInner inner;
}
是的,在<代码>COuter:COuter ( const CInner& >中,该参数的名称与成员变量相同。
在VC++中运行正常 - VC++理解用参数初始化成员变量才是合理的,于是就发生了这种情况 - CInner :: inner
由参数初始化。但是当使用GCC编译时,它以另一种方式解释:GCC用CInner :: inner
初始化它本身,所以它没有初始化。
哪个编译器是正确的?