有了委派构造函数,就不用每个构造版本都做同样的初始化工作,只需要不断形参少的委派就行了
以下是《深入理解C++11》中的截图

以下是自己的实现
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
| #include <stdlib.h> #include <iostream> #include <sstream> #include <string>
class Info { public: Info() { init(); } Info(int _age) : Info() { mAge = _age; printf("--- one param mAge:%d\n", mAge); } Info(int _age, std::string _name) : Info(_age) { mName = _name; printf("--- two param mName:%s\n", mName.c_str()); }
private: void init(){ mHeight = 1.23f; printf("--- init mheight:%f\n", mHeight); } int mAge; std::string mName; float mHeight; };
void testDelegatingConstructor() { Info info(77, "yang");
}
|