博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
关于纯虚函数
阅读量:6504 次
发布时间:2019-06-24

本文共 1108 字,大约阅读时间需要 3 分钟。

hot3.png

#include "stdafx.h"

#include<iostream>   
using namespace std;

//1.一个类中可以声明一个或多个纯虚函数,只要有纯虚函数的类就是抽象类

//2.抽象类只能作为其他类的基类,不能用来建立对象,又称抽象基类
//3.如果派生类只是简单地继承了抽象类的纯虚函数,而没有重新定义基类的纯虚函数,则派生类也是一个抽象类

class A{ 

public:
 virtual void fun() = 0;          //纯虚函数
};

class B:public A{

public:
 void fun(){cout<<"实现纯虚函数的定义成功"<<endl;}  //重写基类纯虚函数
};

//只有派生类与基类的虚函数具有完全相同的函数名、返回类型以及参数表,才能实现虚函数的特性

class C:public A{
public:
 void fun(int i){cout << "fun(int i)并不是基类纯虚函数fun()的实现版本"<<endl;}
};
 

//PS:以下两种声名没有区别

int *i,j = NULL;
int* p,q = NULL;
 

int _tmain(int argc, _TCHAR* argv[])

{
cout << i << endl;
cout << j << endl;
cout << p << endl;
cout << q << endl;
 

 //A a;              //错误:A是抽象类,不能建立对象

   B b;
 //C c;              //错误:C并没有实现基类的纯虚函数,所以C仍是抽象类,不能建立对象
 

 A *p1 = NULL;

 A *p2 = NULL;

 p1 = &b;

 p2 = new B;
 

//p1.fun();           //错误:left of '.fun' must have class/struct/union

//p2.fun();           //错误:left of '.fun' must have class/struct/union
 p1->fun();
 p2->fun();
 

  A &a = b;

 a.fun();
//a->fun();           //错误:type 'A' does not have an overloaded member 'operator ->'
                           //错误: '->A::fun' : left operand has 'class' type, use '.’

 cin.get();

 return 0;
}

转载于:https://my.oschina.net/ucliaohh/blog/806145

你可能感兴趣的文章
struts2中使用标签操作静态方法等
查看>>
熬夜写了一个小游戏,向SpaceX聊表敬意
查看>>
身份证工具类
查看>>
JPA增删改查,
查看>>
apache 开启 gzip 压缩服务
查看>>
python mysql
查看>>
开源 免费 java CMS - FreeCMS1.5-建站向导
查看>>
Selenium的延迟等待
查看>>
jquery 1.6以上版本 全选
查看>>
AppCan 学习
查看>>
flask框架
查看>>
《疯狂Java讲义》学习笔记(十)异常处理
查看>>
Lua(Codea) 中 table.insert 越界错误原因分析
查看>>
ELK 5.x日志分析 (二) Elasticserach 5.2 安装
查看>>
一次奇怪的AP注册异常问题处理
查看>>
TableStore: 海量结构化数据分层存储方案
查看>>
Unity 4.x游戏开发技巧集锦(内部资料)
查看>>
自适应网页设计
查看>>
获取BT节点信息bittorrent-discovery
查看>>
Centos 7使用vsftpd搭建FTP服务器
查看>>