Core List
1. 构造和析构函数中调用 virtual 函数的问题
结论:构造和析构函数中调用 virtual 函数,则将必然调用基类的 virtual 函数,而非派生类的 virtual 函数,因为派生类的部分变量尚未定义(已经释放)
2. derived class 上传必要构造信息至 base class 的构造函数实例
class Transaction {
public:
explicit Transaction (const string& logInfo);
void log(const string& logInfo) const; // 非虚函数
};
Transaction::Transaction(const string& logInfo) {
log(logInfo);
}
class BuyTransaction::public Transaction {
public:
BuyTransaction (parameters) : Transaction (createLogString(parameters)) {}
private:
static string createLogString(parameters);
};
注:static 函数可以使用类的 static 成员, 但不可以直接使用类的非 static 成员。(确保了createLogString 使用的全部为 static 成员,即无尚未初始化的成员)