#include #include using namespace std; class SimpleT { public: SimpleT(string word ="default") { name = word; cout << "\tIn SimpleT constructor " << word << endl; } string name; }; class NoDefaultT{ public: NoDefaultT() = delete; NoDefaultT(int i, char x = 'c'): a{"override A"}, myData{i} , myLetter(x), c("hello") { cout << "In NoDefaultT constructor " << endl; cout << "The name is " << c.name << endl; cout << "My int is " << myData << " my letter is " << myLetter << endl; } int Data(void) const { return myData; } int Letter(void) const { return myLetter; } private: SimpleT a{"First"}; int myData; char myLetter; SimpleT b{"second"}; SimpleT c; }; class NeedsCtorInitT{ public: NeedsCtorInitT(): data1(4), data2(3), //data2{5, 'x'}, data3{22} { }; private: int data1; NoDefaultT data2; int data3; }; class ErrorT{ public: ErrorT( int a = 5, int b = 10) : data2(b), data1(a * data2) { cout << "data1 = " << data1 << endl; cout << "data2 = " << data2 << endl; }; private: int data1, data2; }; int main() { NoDefaultT a(4); NeedsCtorInitT b; cout << endl << endl; ErrorT c; cout << " The data for a is " << a.Data() << endl; return 0; }