#include <iostream>
#include <string>
class X {
public:
X() : val(0) { std::cout << "X: default constructor\n";}
X(const std::string& s, int i) : str(s), val(i) { std::cout << "X: constructor\n";}
private:
std::string str;
int val;
};
class Y {
public:
Y() : ptr(0) { std::cout << "Y: default constructor\n";}
Y(int size) { ptr = new int[size]; std::cout << "Y: constructor\n";}
~Y() { delete[] ptr; std::cout << "Y: destructor\n";}
private:
int* ptr;
};
int main()
{
X x("C++", 9);
Y y(5);
}