社区
C#
帖子详情
为什么要用虚函数,也就是说虚函数的优点是什么
zcdg909
2008-09-18 06:00:22
为什么要用虚函数,也就是说虚函数的优点是什么
...全文
459
15
打赏
收藏
为什么要用虚函数,也就是说虚函数的优点是什么
为什么要用虚函数,也就是说虚函数的优点是什么
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
15 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
nooning
2008-09-19
打赏
举报
回复
[Quote=引用 11 楼 Inpool 的回复:]
虚方法重写以后继承过来的那个方法就没了,而非虚方法用相同的方法签名重写里面的操作只是把继承过来的那个方法隐藏起来,而他本身还是存在的
虚方法的重写一般用override关键字,而非虚方法重写一般用new关键字,前者是真正的重写,即覆盖,后者其实是新建一个,将原来同签的隐藏起来。
好好去看看多态里重写与隐藏的区别。
[/Quote]
你无论用什么方法,父类有的,永远都存在。它同样被写在VTable中。
ZKM_ZHANG
2008-09-19
打赏
举报
回复
Inpool 说得很详细。学习了。
diffmaker
2008-09-18
打赏
举报
回复
今天又学习了不少知识,嘿嘿
cc_net
2008-09-18
打赏
举报
回复
OO思想是面向接口,面向抽象类编程
如果不能用虚函数,那就无法实现多态,就无法通过抽象类型去访问继承的对象
虚函数不是为了重写,是未来多态,为了OO
JAVA中全是虚函数
Inpool
2008-09-18
打赏
举报
回复
虚方法重写以后继承过来的那个方法就没了,而非虚方法用相同的方法签名重写里面的操作只是把继承过来的那个方法隐藏起来,而他本身还是存在的
虚方法的重写一般用override关键字,而非虚方法重写一般用new关键字,前者是真正的重写,即覆盖,后者其实是新建一个,将原来同签的隐藏起来。
好好去看看多态里重写与隐藏的区别。
颤菊大师
2008-09-18
打赏
举报
回复
[Quote=引用 9 楼 xdbjzhhh 的回复:]
想重写重写,不想重写不重写
相当灵活
算是一个默认值,不写新函数就用旧函数
[/Quote]
恩.的确.
「已注销」
2008-09-18
打赏
举报
回复
想重写重写,不想重写不重写
相当灵活
算是一个默认值,不写新函数就用旧函数
walkingmu
2008-09-18
打赏
举报
回复
建议楼主去看看《大话设计模式》,很多设计模式都要用到虚函数的。
这是面向对象的特性之一,“继承,多态,封装”中的多态。
ProjectDD
2008-09-18
打赏
举报
回复
参考:
http://topic.csdn.net/u/20080918/18/a97d8845-c3a1-4aef-afb1-3b7172167b58.html
zcdg909
2008-09-18
打赏
举报
回复
不是虚函数我也可以重写呀?派生类中和基类中有同签名函数,通过派生类对象访问这个函数时,应该优先执行派生类的函数,如果派生类没有这个函数才去执行基类中这个同名函数,前提是派生类公有继承基类时才能通过派生类访问基类的这个函数。
lovehongyun
2008-09-18
打赏
举报
回复
子类可以重写.
wxz280973534
2008-09-18
打赏
举报
回复
假设有一个"猫"的类,一个"老虎"的类
一只猫他有很多属性和方法,比如
有4只脚
一个头
会睡觉
会叫(但是是猫叫)
现在你的"老虎"类派生于这个"猫类"
老虎有4只脚,一个头,会睡觉,这三个和猫是一样的,
但是"老虎"的叫声和猫不一样,这就需要重写"猫"类的"会叫"的方法
重写"会叫"的前提是"会叫"是个虚方法,
JeffChung
2008-09-18
打赏
举报
回复
楼上答的对。
我姓区不姓区
2008-09-18
打赏
举报
回复
[Quote=引用 1 楼 zhangtian00_00 的回复:]
可以重写,最大的优点.
虽然回答简单,但是绝对正确
[/Quote]
没错,实现多态
zhangtian00_00
2008-09-18
打赏
举报
回复
可以重写,最大的优点.
虽然回答简单,但是绝对正确
C++为什么
要用
虚函数
如果子类覆盖的父类的
虚函数
则父类的指针或引用实际指向子类的对象 那通过该指针或引用调用
虚函数
时,则将调用子类的(虚)函数 如果不是
虚函数
,则将调用父类的函数
虚函数
的优势在于当用指针调用
虚函数
的时候,即使是基类类型的指针,也会调用到派生类型的函数。 我们知道,用C++开发的时候,用来做基类的类的析构函数一般都是
虚函数
。可是,为什么要这样做呢?下面用一个小例子来说明: 有
虚函数
详解
一、什么是
虚函数
类的成员函数前加 virtual 这种函数就叫做
虚函数
二、和
虚函数
相关的一些概念 1、纯
虚函数
:在
虚函数
的声明的后面添加=0,这种
虚函数
就叫纯
虚函数
。可以不实现,但如果实现必须在类外(只能在父类的构造函数、析构函数中调用) 2、抽象类:成员函数中有纯
虚函数
,这种类叫抽象类,抽象类不能实例化(不能创建对象),抽象类必须被继承且纯
虚函数
被覆盖后,由子类实例化对象,如果继承抽象类,但...
C++
虚函数
和
虚函数
表
今天和大家分享的是C++中
虚函数
和
虚函数
表相关知识
虚函数
与多态
一:基本概念:(1)多态性(Polymorphism)是指一个名字,多种语义;或界面相同,多种实现。(2)重载函数是多态性的一种简单形式。(3)C++为类体系提供一种灵活的多态机制——
虚函数
。(4)
虚函数
允许函数调用与函数体的联系在运行时才进行,称为动态联编二:
虚函数
和动态联编(1) 冠以关键字 virtual 的成员函数称为
虚函数
(2)实现运行时多态的关键首先是要说明
虚函数
,另外,必须用 基类...
C++_多态(深入理解
虚函数
表)
多态 多态的概念:通俗来说,就是多种形态,具体点就是去完成某个行为,当不同的对象去完成时会产生出不同的状态。 比如买票这个行为,当普通人买票时,是全价买票;学生买票时,是半价买票;军人买票时是优先买票 怎么构成多态 并没有构成多态,形参p对象,全部调用了Person类的成员函数。 多态与重写 这时候就需要使用
虚函数
来构成多态。 梳理一下,多态的条件: 继承类中,需要对
虚函数
进行重写。 基类的指针或者引用都去调用这个
虚函数
而重写的条件 3. 父子类中的函数都是
虚函数
。 4. 函数名参数返回值都要相
C#
110,533
社区成员
642,574
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章