虚函数纯虚函数的用法

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情

虚函数是指一个类中你希望重载的成员函数,当你用一个基类指针或引用指向一个继承类对象的时候,你调用一个虚函数,实际调用的是继承类的版本。  下面是一个实例:

#i nclude "stdio.h"
#i nclude "conio.h"
class Parent
{
public:
    char data[20];
    void Function1();
    virtual void Function2(); // 这里声明Function2是虚函数
}parent;
 
void Parent::Function1()
{
    printf("This is parent,function1/n");
}

void Parent::Function2()
{
    printf("This is parent,function2/n");
}

class Child:public Parent
{
void Function1();
void Function2();
} child;

void Child::Function1()
{
printf("This is child,function1/n");
}

void Child::Function2()
{
printf("This is child,function2/n");
}

int main(int argc, char* argv[])
{
Parent *p; // 定义一个基类指针
if(_getch()=='c') // 如果输入一个小写字母c
p=&child; // 指向继承类对象
else
p=&parent; // 否则指向基类对象
p->Function1(); // 这里在编译时会直接给出Parent::Function1()的入口地址。
p->Function2(); // 注意这里,执行的是哪一个Function2?
return 0;
}

当我们输入小写字母C时,输出为:

This is parent,function1
This is child,function2

这里虽然parent类的指针调用的是Child类的对象,但非虚函数指针采用的是编译时赋值,而编译时parent并不知道实际指向哪个类(直到运行时才知道),所以它只能将parent类的函数的地址赋给指针.但虚函数采用的是动态联编,它可以在运行时判断指针指向的对象,并自动调用函数的函数.

故当我们输入其他字母时,输出为:

This is parent,function1
This is parent,function2

 


本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/ysr1980/archive/2007/07/16/1694153.aspx

c++ 虚函数纯虚函数、析构函数及虚析构函数的用法总结 最近也是被这几个虚函数和析构函数搞得有点糊,做个总结吧,千万别被问,问就是背诵一遍。 1、虚函数纯虚函数 虚函数的主要作用是建立抽象模型,从而可以达到方便扩展系统的目的。纯虚函数是是一种特殊的虚函数,可以说是虚函数的子集,它可以不需要再基类中写函数实现,而虚函数不写函数实现就会报错。 为啥会有虚函数? 为了方便实用多态,编程者常常需要在基类中定义虚函数。在很多情况下,基类本身生成对象是不合情理... 阅读详情

相关推荐

C++中虚函数纯虚函数用法

主要介绍了C++中虚函数纯虚函数用法,是非常重要的概念,需要的朋友可以参考下

虚函数纯虚函数的使用

1、定义一个函数为虚函数,不代表函数为不被实现的函数。 2、定义他为虚函数是为了允许用基类的指针来调用子类的这个函数。 3、定义一个函数为纯虚函数,才代表函数没有被实现。 4、定义纯虚函数是为了实现一个接口,起到一个规范的作用,规范继承这个类的程序员必须实现这个函数。 5、一般而言纯虚函数的函数体是缺省的,但是也可以给出纯虚函数的函数体(此时纯虚函数仍然为纯虚函数,对应的类仍然为抽象类,还是不能实例化对象)调用纯虚函数的方法为:抽象类类名::纯虚函数名(实参表) 虚函数: C++的虚函数...

wuhuuua的博客 1019

C++虚函数纯虚函数使用详解

虚函数 纯虚函数 虚函数其实本身就是,面向对象语言的一种行为抽象,从设计模式角度出发的话,减少代码重复量,是为了提高程序扩展性的一种手段。在类中的具体实现如下: virtual void fun() = 0; //or virtual void fun() const = 0; = 0 就是向编译器表示,该函数为纯虚函数,有纯虚函数的类,则被称为抽象类,该类不能被实例化,而之后的const 关键字则表示该函数内部不能修改数据成员,第一次见这种写法,被唬住了。 ...

SUST_DOG_MASTER博客 2328

C++ 虚函数纯虚函数的作用和使用方法

基类与派生类中有同名函数。在下面的程序中Student是基类,Graduate是派生类,它们都有display这个同名的函数。 #include <iostream> #include <string> using namespace std; //声明基类Student class Student { public: Student(int, string,floa...

菜鸡工坊 8292

C++中的纯虚函数的使用

1、使用纯虚函数 class A { private: A(int v,float c); virtual void D(int index,string name) = 0;//定义一个纯虚函数 }; class B:public A { private: B(int e,float f); virtual void D(int index,string name) override;//在派生类函数中进行

Littlehero_121的博客 918

C++的纯虚函数使用与接口实现

C++的纯虚函数使用与接口实现

高空的博客 2807

C++虚函数纯虚函数用法和区别

C++虚函数纯虚函数用法与区别(转) 1.虚函数纯虚函数可以定义在同一个类(class)中,含有纯虚函数的类被称为抽象类(abstractclass),而只含有虚函数的类(class)不能被称为抽象类(abstractclass)。    2.虚函数可以被直接使用,也可以被子类(subclass)重载以后以多态的形式调用,而纯虚函数必须在子类(sub...

weixin_38169562的博客 163

虚函数的定义、用法以及纯虚函数和虚析构函数

虚函数是一种成员函数,它允许子类重写(override)父类中定义的函数。 虚函数的重要意义便是实现多态性。 多态性是面向对象编程的一个核心概念:即同一个接口可以有不同的实现,从而实现代码的灵活性和通用性。虚函数的关键字为virtual。用virtual关键字来声明一个函数为虚函数。声明一个虚函数的目的是允许派生类重写该函数,以提供特定的实现,而通过基类的指针或引用调用虚函数时,将根据对象的实际类型来调用相应的函数实现。

shaohua_du的博客 2378

C++进阶之抽象类与纯虚函数用法实例(三百二十三)

本篇目的:C++进阶之抽象类与纯虚函数用法实例基本概念抽象类是C++中一种不能直接实例化的类,它主要用于作为其他类的基类。抽象类通常包含至少一个纯虚函数,目的是为派生类提供统一的接口和约定。通过抽象类,C++可以实现面向对象编程中的多态性,强制派生类实现某些特定的功能。抽象类无法直接创建对象,必须通过派生类来实现。纯虚函数的定义纯虚函数是没有函数体的虚函数,它在基类中声明但没有实现。纯虚函数的声明以= 0结尾,表示该函数在基类中没有实现,派生类必须提供具体的实现。

Android系统攻城狮 1859

C++虚函数纯虚函数用法与区别

C++虚函数纯虚函数用法与区别(转) 1.虚函数纯虚函数可以定义在同一个类(class)中,含有纯虚函数的类被称为抽象类(abstractclass),而只含有虚函数的类(class)不能被称为抽象类(abstractclass)。    2.虚函数可以被直接使用,也可以被子类(subclass)重载以后以多态的形式调用,而纯虚函数必须在子类(sub...

weixin_30564901的博客 2068

C++中的虚函数纯虚函数用法

C++中的虚函数纯虚函数用法   1. 虚函数纯虚函数可以定义在同一个类(class)中,含有纯虚函数的类被称为抽象类(abstract class),而只含有虚函数的类(class)不能被称 $ 2. 虚函数可以被直接使用,也可以被子类(sub class)重载以后以多态的形式调用,而纯虚函数必须在子类(sub class)中实现该函数才可以使用 $ 只有声明而没有定义。 3....

weistar103的专栏 162

虚函数纯虚函数用法(C++)

C++中的虚函数纯虚函数用法 1.虚函数纯虚函数可以定义在同一个类(class)中,含有纯虚函数的类被称为抽象类(abstract class),而只含有虚函数的类(class)不能被称为抽象类(abstract class)。 2.虚函数可以被直接使用,也可以被子类(sub class)重载以后以多态的形式调用,而纯虚函数必须在子类(sub clas...

Lambo19891027的博客 169

纯虚函数用法

纯虚函数 虚函数后面加 = 0 virtual void ViewAcct() const = 0; // 纯虚函数

weixin_43514545的博客 309

虚函数纯虚函数用法和区别

学习C++的多态,必然听说过虚函数纯虚函数。 要学习虚函数纯虚函数,首先我们要搞清楚它的语法规范。总结一下无非下面几点: 在类成员方法的声明(注意不是定义)前面加个virtual,该函数就变为虚函数,在虚函数声明语句后面加个=0,虚函数就变为纯虚函数。 当类中有了纯虚函数,这个类也称为抽象类 子类可以重新定义基类的虚函数,我们把这个行为称之为复写(override)。 子类可自主选择是否要提供一份属于自己的个性化虚函数实现,但是必须提供一份属于自己的个性化纯虚函数实现。 虚函数纯虚函数出现的意义何

qq_45444695的博客 682

C++之普通成员函数、虚函数以及纯虚函数的区别与用法要点

普通成员函数是静态编译的,没有运行时多态,只会根据指针或引用的“字面值”类对象,调用自己的普通函数;虚函数为了重载和多态的需要,在基类中定义的,即便定义为空;纯虚函数是在基类中声明的虚函数,它可以再基类中有定义,且派生类必须定义自己的实现方法。假设我们有三个类Person、Teacher、Student它们之间的关系如下: 类的关系图 普通成员函数【Demo1】 根据这个类图,我们有下面的代码实...

线上幽灵 1215
上一篇: VC中CListCtrl用法详解
下一篇: 深入理解C++的动态绑定和静态绑定
dlfer11
博客等级 码龄15年 19粉丝 27原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值