#include <iostream> using namespace std; class Example { public: // 1. Default Constructor Example() { cout << "Initialize members with default values" << endl; } // 2. Parameterized Constructor Example(int a, double b) : member_a(a), member_b(b) { cout << "Initialize members with provided values" << endl; } // 3. Copy Constructor Example(const Example &other) : member_a(other.member_a), member_b(other.member_b) { cout << "Create a new object as a copy of an existing object" << endl; } // 4. Move Constructor Example(Example &&other) noexcept : member_a(std::move(other.member_a)), member_b(std::move(other.member_b)) { cout << "Transfer ownership of resources from one object to another" << endl; } // 5. Delegating Constructor Example(int a) : Example(a, 0.0) { cout << "Delegate to the two-parameter constructor" << endl; } // 6. Converting Constructor explicit Example(double d) : member_a(static_cast<int>(d)), member_b(d) { cout << "Convert from another type (in this case, double)" << endl; } // 7. Copy-List-Initialization Constructor Example(std::initializer_list<int> list) { cout << "Initialize from a list of values" << endl; } private: int member_a; double member_b; }; int main() { // Usage examples: Example e1; // Default constructor Example e2(10, 3.14); // Parameterized constructor Example e3 = e2; // Copy constructor Example e4 = std::move(e3); // Move constructor Example e5(5); // Delegating constructor Example e6 = Example(3.14); // Converting constructor Example e7 = {1, 2, 3, 4}; // Copy-list-initialization constructor return 0; }