我很难理解为什么这段代码似乎能够运行。我不应该得到一个“数组初始化器必须是初始化列表”的错误吗?
#include <iostream>
class B {
public:
B() { std::cout << "B Constructor " << std::endl ; }
B(const B&) { std::cout << "B Copy Constructor " << std::endl ; }
~B() { std::cout << "B Destructor " << std::endl ; }
} ;
class A {
public:
A() { std::cout << "A Constructor " << std::endl ; }
A(const A& other) : bs(other.bs)
{ std::cout << "A Copy Constructor " << std::endl ;}
~A() { std::cout << "A Destructor " << std::endl ; }
private:
B bs[12] ;
};
int main() {
A a ;
A b(a) ;
return 0 ;
}
g++ --version
的输出为 g++ (GCC) 4.4.7 20120313 (Red Hat 4.4.7-18)
--std=c++0x
或--std=c++03
),以及-pedantic-errors
标志,你会发现这是一个扩展。如果这样做没有帮助,那么GCC 4.4.7存在一个错误。 - StoryTeller - Unslander Monica-pedantic
选项,gcc也没有改变任何东西。 - NathanOliver