《大规模C++程序设计》读书笔记25

原则96:不必为了多态行为而损害语法问题,例如双目运算符的对称隐式转换。

原则97:虚函数实现行为上的变化;数据成员实现值的变化。

 

定义47:

隐藏(hide):一个成员函数若与在一个基类或文件作用域中声明的某个函数同名,则隐藏了那个函数。

重载(overload):一个函数用定义在同一作用域的同样的名称重载了另一个函数的名称。

覆盖(override):一个成员函数覆盖了在一个基类中声明为虚拟的同样的函数。

重新定义(redefine):一个函数的默认定义被另一个定义不可挽回的取代。

 

指导方针13:避免将一个基类函数隐藏在一个派生类中。

 

一个派生自一个纯协议类的抽象类有时被称为部分实现。在一个部分实现中的一些函数可能有一个有用的默认行为,但是它们应该不必自动成为默认行为,而应该定义为纯虚函数,迫使一个派生类作者显式的激活默认行为。

#include 
 


  struct Base {				
  // *** Base Class ***
	
  virtual 
  void f() = 0;
	
  virtual ~Base();
};

Base::~Base() {}


  struct Partial : Base {		
  // *** Partial Implementation ***
	
  virtual 
  void f() = 0;	
  // declaration of pure virtual function
	~Partial();
};


  void Partial::f() {			
  // definition of pure virtual function
	cout << "
  Partial::f" << endl;
}

Partial::~Partial() {}


  struct Derived : Partial {		
  // *** Concrete Derived Class ***
	Derived() {}
	
  void f();
	~Derived();
};


  void Derived::f() {
	cout << "
  Derived::f" << endl;
	Partial::f();			
  // explicit call of pure virtual function
}

Derived::~Derived() {}

int main() 
 
{
	Base *b = new Derived;
	b->f();
        return 0;
}

// Output:
//	Derived::f
//	Partial::f

 

原则98:静态成员函数通常用于实现一个单独工具类中的非基本功能。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

俞凡 DeepNoMind

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值