/* Problem 50 */
#include <iostream>
using namespace std;
class a {
char ach;
public:
a(char c) { ach = c - 1; }
~a(); // defined below
virtual void out(ostream &os) {
if ('m' < ach)
os << ach << char(ach+7) << char(ach+6) << ' ';
else
os << ach << ach << ach;
}
};
class b: public a {
char bach;
public:
b(char c1, char c2) : a(c1) { bach = c2-1; }
void out(ostream &os) {
a::out(os);
os << ' ' << bach << char(bach + 11);
}
};
ostream &operator<<(ostream &os, a &x) {
x.out(os);
return os;
}
a::~a() {
cout << *this; // calls above operator
}
int main() {
b var1('n', 'e');
a var2('o');
cout << "Homer says: " << var1 << '\n';
return 0;
}
我很困惑为什么只有两个对象被破坏而三个对象被构造
我还把cout
每个构造都放在了base_class
和上derived_class
,看看有多少是构造的,我对构造对象的数量是正确的,但是当我做破坏时我错了。
如果有人可以请指出为什么最后一个破坏不适用于正在创建的第一个对象?