#include <iostream>
using namespace std;
class String {
public:
String(const char* str) : data(str) {}
~String()
{
cout << "~String()." << endl;
}
friend ostream& operator<<(ostream& stream, const String& s);
private:
string data;
};
ostream& operator<<(ostream& stream, const String& s)
{
return stream << s.data << endl;
}
void printPointer(const String* pointer)
{
cout << *pointer << endl;
cout << "End of printPointer" << endl;
}
const String* func(const String& s1)
{
return &s1;
}
int main()
{
printPointer(func("Hello, World!!!"));
cout << "End of main()." << endl;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKY2xhc3MgU3RyaW5nIHsKcHVibGljOgoJU3RyaW5nKGNvbnN0IGNoYXIqIHN0cikgOiBkYXRhKHN0cikge30KCX5TdHJpbmcoKSAKCXsgCgkJY291dCA8PCAiflN0cmluZygpLiIgPDwgZW5kbDsKCX0KCQoJZnJpZW5kIG9zdHJlYW0mIG9wZXJhdG9yPDwob3N0cmVhbSYgc3RyZWFtLCBjb25zdCBTdHJpbmcmIHMpOwoJCnByaXZhdGU6CglzdHJpbmcgZGF0YTsKfTsKCm9zdHJlYW0mIG9wZXJhdG9yPDwob3N0cmVhbSYgc3RyZWFtLCBjb25zdCBTdHJpbmcmIHMpIAp7IAoJcmV0dXJuIHN0cmVhbSA8PCBzLmRhdGEgPDwgZW5kbDsgCn0KCQp2b2lkIHByaW50UG9pbnRlcihjb25zdCBTdHJpbmcqIHBvaW50ZXIpCnsKICAgIGNvdXQgPDwgKnBvaW50ZXIgPDwgZW5kbDsKICAgIGNvdXQgPDwgIkVuZCBvZiBwcmludFBvaW50ZXIiIDw8IGVuZGw7Cn0KCmNvbnN0IFN0cmluZyogZnVuYyhjb25zdCBTdHJpbmcmIHMxKQp7CiAgICByZXR1cm4gJnMxOwp9CgppbnQgbWFpbigpCnsKICAgIHByaW50UG9pbnRlcihmdW5jKCJIZWxsbywgV29ybGQhISEiKSk7CiAgICBjb3V0IDw8ICJFbmQgb2YgbWFpbigpLiIgPDwgZW5kbDsKfQo=