热度 2
class Transaction {// 所有交易的基类 public: Transaction(); virtual void logTransaction() const = 0;//建立依赖于具体交易类型的登录项 ... }; Transaction::Transaction() //实现基类的构造函数 { ... logTransaction(); //最后,登录该交易 } class BuyTransaction: public Transaction { // 派生类 public: virtual void logTransaction() const; //怎样实现这种类型交易的登录? ... }; class SellTransaction: public Transaction { //派生类 public: virtual void logTransaction() const; //怎样实现这种类型交易的登录? ... }; |
BuyTransaction b; |
class Transaction { public: Transaction() { init(); } //调用非虚函数... virtual void logTransaction() const = 0; ... private: void init() { ... logTransaction(); //注意这里调用了虚函数 } }; |
class Transaction { public: explicit Transaction(const std::string& logInfo); void logTransaction(const std::string& logInfo) const;//现在是一个非虚函数 ... }; Transaction::Transaction(const std::string& logInfo) { ... logTransaction(logInfo);// 现在调用的是一个非虚函数 } class BuyTransaction: public Transaction { public: BuyTransaction( parameters ) :Transaction(createLogString(parameters)) { ... } //把登录信息传送给基类的构造函数 ... private: static std::string createLogString( parameters ); }; |
小黑屋|手机版|Archiver|鱼C工作室
( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)
GMT+8, 2025-7-16 19:07
Powered by Discuz! X3.4
© 2001-2023 Discuz! Team.