//Effective C++ Item09
//绝不在构造和析构过程中调用virtual函数
#include<iostream>
#include<cstring>
using namespace std;
class Transaction{
public:
Transaction(){
//被调用的logTransaction是Transaction内部的版本,不是BuyTransaction内的版本,因为此时derived class的成员变量尚未初始化
//根本的原因是,在derived class对象的base class构造期间,对象的类型是base class而不是derived class
logTransaction();
};
virtual void logTransaction()const = 0;//pure virtual
};
class BugTransaction :public Transaction{
public:
virtual void logTransaction()const{
cout << "Log BugTransaction" << endl;
};
};
int main(){
BugTransaction b;
}
Effective C++ Item09 Note
最新推荐文章于 2023-04-24 00:51:28 发布