本文主要是介绍Effective C ++ 条款34,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
该条款讲的内容就是以下3点:
第一点:
pure virtual 成员函数的作用,纯虚函数的作用就是base class基类提供给derived class 派生类一个接口,而且只是起到接口的目的。
举到例子,
class picture
{public:virtual void Drew()=0;
};class picture1:public picture
{public:virtual void Drew(){//..........};
};class picture2:public picture
{public:virtual void Drew(){//..........};
};
对于一幅图片,绘画功能必须有,但是各种派生出的对象图片绘画过程却都不同,所以在base class中只定义drew函数接口就行了,没有实现的必要。
第二点:
virtual 函数的作用,既提供接口,也提供实现(implement),这是为了定义缺省的功能,如果基类一个函数的功能能满足部分派生类的对象,那么最好把这个基类函数定义成virtual函数。这样做可以减小程序员的工作量。如下例子,person都会跑,青年人直接继承 run()跑的功能,而婴儿的 run()跑的功能却需要重写。
class Person
{public:virtual void run(){//..........};
};class adult:public Person
{public:virtual void run(){//..........};
};class baby:public Person
{public:virtual void run(){//..........};
};
第三点:
non-virtual函数的意义是,对于基类中的函数功能,在每个派生类中都适用,没有重新定义的必要,没有覆盖的必要。那么选择non-virtual函数最合适。以下例子,只要是动物都需要吃,不用重写该功能
class animal
{public:void eat(){//..........};
};class chicken:public animal
{};
这篇关于Effective C ++ 条款34的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!