C++的构造函数复用

今天遇到了个构造函数服用问题,大概的形式如下:

1 class X
2 {
3     int m_i;
4 public:
5     X( int i ) : m_i(i){}
6     X() : X(42){}
7 };

这个在现在的编译器上编译不过。

目前的解决之道:

 1 class X
 2 {
 3     int m_i;
 4 public:
 5     X( int i )
 6     {
 7         instance(i);
 8     }
 9     X()
10     {
11         instance(42);
12     }
13 private:
14     void instance(int i = 0)
15     {
16         m_i = i;
17     }
18 };

 

没办法,牺牲了一些效率……

刚才又看了一篇去年的文章,号称C++委员会正在审核这种构造函数复用的功能,真希望能早点在新编译器上使用。

posted @ 2008-10-07 18:31  摇滚诗人  阅读(844)  评论(1)    收藏  举报