以下程序可以编译并运行,不过加上注释的那几行就编译不过。。不解释了。。
经过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");
}