C++中一个危险的地方

以下程序可以编译并运行,不过加上注释的那几行就编译不过。。不解释了。。

经过g++ 4.4.3 和 g++ 3.3.6测试

#include <cstdio> class X { public: X() : m_id(m_tot_id ++) { printf("X #%d constructed./n", m_id); } ~X() { printf("X #%d destructed./n", m_id); } void show_id() const { printf("my id is %d/n", m_id); } private: static int m_tot_id; int m_id; }; int X::m_tot_id; class Saver { const X &x; public: Saver(const X &x_) : x(x_) {} void show_x_id() {x.show_id();} }; int main() { Saver *ptr = new Saver(X()); ptr->show_x_id(); // Saver s(X()); // s.show_x_id(); // X &x = X(); printf("hello, world/n"); }  

 

 

你可能感兴趣的:(C++,测试)