C++ 中什么样的函数可以作为虚函数

 我来答
百度网友8faff4c
2021-12-05
知道答主
回答量:6
采纳率:0%
帮助的人:744
展开全部
二,哪些函数不能成为虚函数

1.内联函数:我们都知道内联函数只是在函数调用点将其展开,它不能产生函数符号,所以不能往虚表中存放,自然就不能成为虚函数。

2.静态函数:定义为静态函数的函数,这个函数只和类有关系,它不完全依赖于对象调用,所以也不能成为虚函数。

3.构造函数:都知道只有当调用了构造函数,这个对象才能产生,如果把构造函数写成虚函数,这时候我们的对象就没有办法生 成。更别说用对象去调用了。所以构造函数不能成为虚函数。

4.友元函数:友元函数不属于类的成员函数,不能被继承。对于没有继承特性的函数没有虚函数的说法。

5.普通函数:普通函数不属于成员函数,是不能被继承的。普通函数只能被重载,不能被重写,因此声明为虚函数没有意义。因为编译器会在编译时绑定函数。

三,哪些函数可以成为虚函数呢?

1.普通的成员方法是可以成为虚函数的

2.还有析构函数,因为析构函数是为了释放对象的,所以之前我们的对象已经生成,而且析构函数可以取地址,所以可以成为虚函数。
————————————————
版权声明:本文为CSDN博主「u010765526」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/u010765526/article/details/106752135/
迮悌赫连雅青
2019-07-18 · TA获得超过1074个赞
知道小有建树答主
回答量:1728
采纳率:95%
帮助的人:8.1万
展开全部
虚函数
的意义在于
动态联编
,也就是说,函数在运行是才确定,而不是在编译的时候确定;
例如:
class
A
{
public:
virtual
void
foo()
{
cout<<"A::foo()
is
called"<<endl;
}
};
class
B:public
A
{
public:
void
foo()
{
cout<<"B::foo()
is
called"<<endl;
}
};
int
main(void)
{
A
*a
=
new
B();
a->foo();
//
在这里,a虽然是指向A的指针,但是被调用的函数(foo)却是B的!
return
0;
}
http://c.biancheng.net/cpp/biancheng/view/244.html
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式