首页 > 代码库 > c++ telescoping constructor is NOT supported until c++11

c++ telescoping constructor is NOT supported until c++11

Telescoping constructor: see Effective Java 2nd Edition Item 2

If you want to use telescoping constructor but your compiler does not support c++11 standards, you can use default parameter instead, see code snippets ‘main.cpp‘, ‘Box.h‘, ‘Box.cpp‘.

If your compiler supports c++11 standards, the syntax of telescoping is shown in code snippet ‘Box2.h‘ and ‘Box2.cpp‘, and you might need to use ‘-std=c++11‘ parameter when you are compiling your source code.

For now, I‘d like to use default parameter.

main.cpp

 1 #include "Box.h" 2  3 int main() 4 { 5     Box box; 6     box.print(); 7     Box box2(1); 8     box2.print(); 9     Box box3(1, A);10     box3.print();11     Box box4(1, A, 1.88);12     box4.print();13     return 0;14 }

 

Box.h

 1 #ifndef BOX_H 2 #define BOX_H 3  4 class Box 5 { 6     public: 7         Box(const int &_a = 0, const char &_b = M, const double &_c = 0.99); 8         ~Box(); 9         void print();10 11     private:12         int a;13         char b;14         double c;15 };16 17 #endif // BOX_H

 

Box.cpp

 1 #include "Box.h" 2  3 #include <iostream> 4  5 using namespace std; 6  7 Box::Box(const int &_a, const char &_b, const double &_c) 8 : a(_a), b(_b), c(_c) 9 {10 11 }12 13 Box::~Box()14 {15 16 }17 18 void Box::print() {19     cout << "a = " << a << ",b = " << b << ",c = " << c << endl;20 }

Box2.h

 1 #ifndef BOX_H 2 #define BOX_H 3  4 class Box 5 { 6     public: 7         Box(const int &_a, const char &_b, const double &_c); 8         Box(const int &_a, const char &_b); 9         Box(const int &_a);10         Box();11         ~Box();12         void print();13 14     private:15         int a;16         char b;17         double c;18 };19 20 #endif // BOX_H

 

Box2.cpp

 1 #include "Box.h" 2  3 #include <iostream> 4  5 using namespace std; 6  7 Box::Box(const int &_a, const char &_b, const double &_c) 8 : a(_a), b(_b), c(_c) 9 {10 11 }12 13 Box::Box(const int &_a, const char &_b)14 : Box(_a, _b, 0.99)15 {16 17 }18 19 Box::Box(const int &_a)20 : Box(_a, M)21 {22 23 }24 25 Box::Box()26 : Box(0)27 {28 29 }30 31 Box::~Box()32 {33 34 }35 36 void Box::print() {37     cout << "a = " << a << ",b = " << b << ",c = " << c << endl;38 }

 

c++ telescoping constructor is NOT supported until c++11