#include <iostream>
#include <cstring>
class DynamicString {
private:
char* data;
public:
DynamicString(const char* str) {
data = new char[strlen(str) + 1];
strcpy(data, str);
std::cout << "String created: " << data << std::endl;
}
~DynamicString() {
std::cout << "Deleting string: " << data << std::endl;
delete[] data;
}
const char* getData() const { return data; }
};
int main() {
DynamicString str1("Hello");
{
DynamicString str2("World");
std::cout << str1.getData() << " " << str2.getData() << std::endl;
} // str2 is destroyed here
std::cout << "After inner scope" << std::endl;
return 0;
} // str1 is destroyed here