社区
C#
帖子详情
虚函数被继承后???
LUJI4
2006-03-12 04:30:36
如果你类中包含一个虚函数,在被子类继承时未重写,子类对象可使用此函数吗?
...全文
110
5
打赏
收藏
虚函数被继承后???
如果你类中包含一个虚函数,在被子类继承时未重写,子类对象可使用此函数吗?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
5 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
axqd
2006-03-12
打赏
举报
回复
当然可以,确定你想表达的是虚函数 virtual 而不是 abstract
兔子-顾问
2006-03-12
打赏
举报
回复
Sure , of course can call.
CMIC
2006-03-12
打赏
举报
回复
可以,自己试试不就知道了吗。
raulredondo
2006-03-12
打赏
举报
回复
编译都不能通过
happycoolsky
2006-03-12
打赏
举报
回复
当然不能啦
Excel函数100问
初学Excel函数你是否总有一种无力感?工作中遇到问题时,不知道用什么函数来解决?函数的单词都认识,但一用它来写公式,要么写不出来,要么结果不对,更别说编写嵌套公式那些函数名称、函数参数的作用总是记不住,公式总是编制不对;用Excel多年,还是只会常用的那三五个函数。本次课程结合职场工作中遇到的问题,整理100问用函数来帮助大家学习Excel函数的这些痛点。熟练掌握Excel函数的他,总是几分钟就能完成,别人倒腾1天的工作量。
C++中构造函数和析构函数是否可以是
虚函数
,为什么?
构造函数和析构函数是否可以是
虚函数
,为什么? 1. 为什么构造函数不能为
虚函数
?
虚函数
的调用需要
虚函数
表指针,而该指针存放在对象的内容空间中;若构造函数声明为
虚函数
,那么由于对象还未创建,还没有内存空间,更没有
虚函数
表地址用来调用
虚函数
——构造函数了。 2. 为什么析构函数可以为
虚函数
,如果不设为
虚函数
可能会存在什么问题? 首先析构函数可以为
虚函数
,而且当要使用基类指针或引用调用子类时,最好将基类的析构函数声明为
虚函数
,否则可以存在内存泄露的问题。 举例说明: 子类B
继承
自基类A;A *p = new B
C++
虚函数
与
继承
百度百科关于
虚函数
的定义: 简单地说,那些被virtual关键字修饰的成员函数,就是
虚函数
。
虚函数
的作用,用专业术语来解释就是实现多态性(Polymorphism),多态性是将接口与实现进行分离;用形象的语言来解释就是实现以共同的方法,但因个体差异,而采用不同的策略。 维基百科对于
虚函数
的定义: 在面向对象程序设计领域,C++、Object Pascal 等语言中有
虚函数
(英语:virtual function)或虚方法(英语:virtual method)的概念。这种函数或方法可以被子类
继承
和覆盖,
C++默认的析构函数不是
虚函数
?析构函数必须是
虚函数
?
虚析构函数:基类指针指向子类对象,用基类指针删除子类对象 纯虚析构函数:需要类内声明,类外实现,含之抽象类,不可实例化 C++默认的析构函数不是
虚函数
?析构函数必须是
虚函数
? C++默认的析构函数不是
虚函数
目的:节省内存
虚函数
需要额外的
虚函数
表和虚表指针,占用额外的内存。对于不会被
继承
的类来说,将析构设置成
虚函数
会浪费内存。只有需要当作父类时,设置成
虚函数
析构函数必须是
虚函数
:防止内存泄漏 当一个类作为父类,需要被
继承
,才把它的析构函数设置为
虚函数
, 子类有开辟到堆区的属性,父类指针走不到子类的析构函数
哪类析构函数必须是
虚函数
,为什么?为什么C++默认的析构函数不是
虚函数
?
将可能会被
继承
的父类的析构函数设置为
虚函数
,可以保证当我们new一个子类,然后使用基类指针指向该子类对象,释放基类指针时可以释放掉子类的空间,防止内存泄漏。 C++默认的析构函数不是
虚函数
是因为
虚函数
需要额外的
虚函数
表和虚表指针,占用额外的内存。而对于不会被
继承
的类来说,其析构函数如果是
虚函数
,就会浪费内存。因此C++默认的析构函数不是
虚函数
,而是只有当需要当作父类时,设置为
虚函数
。 ...
C#
110,533
社区成员
642,574
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章