首先是一些代码:
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;
}
Run Code Online (Sandbox Code Playgroud)
是的,在COuter::COuter( const CInner& )参数中具有与成员变量相同的名称.
在有效的VC++中 - VC++认为用参数初始化成员变量是合理的,这就是发生的事情 - CInner::inner用参数初始化.但是当使用GCC编译它时,它会以另一种方式解释:GCC CInner::inner 自身初始化,因此它未被初始化.
哪个编译器是对的?