C++抽象基类

抽象类定义:

成员函数至少有一个为纯虚函数(函数声明后面加=0,但是不定义)的类为抽象基类,这个基类不能被显示创建其对象。但是这个基类的其他函数都可以正常定义,一般析构函数为虚函数用来被其他类继承。

例如:

头文件:

#ifndef COMMUNICATER_H
#define COMMUNICATER_H

class  Communicater
{
public:
    Communicater(void);
    virtual void run_collect() = 0;
    virtual ~Communicater(void);
};

#endif

源文件:

#include "Communicater.h"

Communicater::Communicater(void)
{

//do something
}

Communicater::~Communicater(void)
{

//do something
}
时间: 2024-12-25 07:39:11

C++抽象基类的相关文章

C# 面向对象 , 抽象基类

抽象基类 关键字,  abstract abstract class SSS { public void aaa() { } } 作为抽象基类, 只能在 继承关系 中 担任父类的角色,不能出现在其他地方. 不能建对象. 抽象类里面的 方法(函数)不能直接实现, 必须在子类实现. 关键字  override ---------只对属性有用(带大括号的) class override EEE : SSS { public void aaa() { } } 抽象新建 SSS p = new EEE()

6、面向对象以及winform的简单运用(抽象基类与接口)

抽象类与抽象方法 1.书写规范: 在类前面加上abstract关键字,就成为了抽象类:在一个方法前面加上abstract关键字,就成为了抽象方法(抽象方法不能有实现方法,直接在后面加分号) 例: abstract class Chouxiang //抽象类 { public abstract void fangfa(); //抽象方法 } 2.抽象类的注意事项: 1)当一个类变为抽象类之后就不能作为对象来使用了,无法new出来 2)抽象方法必须放在抽象类里面(但抽象类中不一定有抽象方法) 3)没

Python 接口:从协议到抽象基类

抽象基类的常见用途:实现接口时作为超类使用.然后,说明抽象基类如何检查具体子类是否符合接口定义,以及如何使用注册机制声明一个类实现了某个接口,而不进行子类化操作.最后,说明如何让抽象基类自动“识别”任何符合接口的类——不进行子类化或注册. Python文化中的接口和协议 接口在动态类型语言中是怎么运作的呢?首先,基本的事实是,Python语言没有 interface 关键字,而且除了抽象基类,每个类都有接口:类实现或继承的公开属性(方法或数据属性),包括特殊方法,如__getitem__ 或 _

6.1 numbers--数值抽象基类

6. 数值和数学库 本库主要提供了数值和数学相关的函数处理以及数据类型.numbers模块定义了抽象的数值类型,math和cmath模块主要包括不同的数学函数,比如用来计算浮点数和复数.decimal模块支持十进制数值表示,可以用任何精度进行运算. 6.1 numbers--数值抽象基类 本模块主要按文档(PEP 3141)定义了数值抽象基类. class numbers.Number 数值类的基类,如果你只是想检查一个参数x是否是Number类型,可以使用函数isinstance(x, Num

C++ 纯虚函数与抽象基类

在C++ 中,虚函数可以很好的实现多态,然而也有一定的局限,这个局限在于,虚函数必须在基类中定义,哪怕是空的实现. 例如下面这段代码编译时就会出错: class Base { virtual void print(); }; class Derived:Base { void print() { cout << "Derived" <<endl; } }; 因为Base类中的虚函数print()没有定义. 而在实际编程时我们往往会遇到无法给基类的函数定义的情况,

C++编程实践: 抽象基类

本实例来自<C++ Primer Plus>(第六版) 第十三章 题目要求: 假设你正在开发一个图形程序,该程序会显示圆和椭圆等,需要考虑: 椭圆要包含椭圆中心坐标,半长轴,半短轴以及方向角的数据.圆要实现圆心坐标,半径等数据. 椭圆要包含移动,旋转一定角度,计算面积和缩放等方法,但是圆不需要旋转. 设计思路: 虽然圆也是一种椭圆的特殊形势,但是设计成由圆类继承椭圆类显然是十分笨拙的.比较好的办法是涉及一个基类BaseEllipse,圆和椭圆都继承此基类.这样便可以使用指针数组同时管理Circ

五、抽象基类与接口

5.1 抽象类与抽象方法 在一个类前面加上“abstract”关键字,此类就成为了抽象类. 对应的,一个方法类前面加上“abstract”关键字,此方法就成为了抽象方法. abstract class Fruit   //抽象类 { public abstract void GrowInArea();  //抽象方法 } 注意抽象方法不能有实现代码,在函数名后直接跟一个分号. 抽象类专用于派生出子类,子类必须实现抽象类所声明的抽象方法,否则,子类仍是抽象类. 抽象类一般用于表达一种比较抽象的事物

流畅python学习笔记:第十一章:抽象基类

__getitem__实现可迭代对象.要将一个对象变成一个可迭代的对象,通常都要实现__iter__.但是如果没有__iter__的话,实现了__getitem__也可以实现迭代.我们还是用第一章扑克牌的例子来看下 class FrenchDeck:     ranks=[str(n) for n in range(2,11)] + list('JQKA')     suits='spades diamonds clubs hearts'.split()     def __init__(sel

python 抽象基类(abc)

设置ABCMeta元类 抽象类是一类用于继承,但是无需实现具体方法的类,它会创建一些子类必须实现的方法签名.抽象类在定义和强制类抽象方面非常有用,它类似于其他变成语言里面的接口概念,无需实现具体方法. 从概念上来讲,有一种实现抽象类的方式是对类方法进行存根,然后在类方法被访问的时候直接抛出NotImplementedError异常.这样可以防止子类在没有重写类方法之前直接访问父类的类方法. 像这样: class Fruit: def check_ripeness(self): raise Not