C++的构造函数复用
今天遇到了个构造函数服用问题,大概的形式如下:
1 class X
2 {
3 int m_i;
4 public:
5 X( int i ) : m_i(i){}
6 X() : X(42){}
7 };
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 };
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++委员会正在审核这种构造函数复用的功能,真希望能早点在新编译器上使用。

浙公网安备 33010602011771号