您的位置:首页 > Web前端

Effective C ++ 条款34

2015-05-31 10:30 295 查看
该条款讲的内容就是以下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
{

};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: