为什么虚函数(virtual)不能是static函数


title: 为什么虚函数(virtual)不能是static函数
date: 2016-06-08 15:22:30
categories: C++
tags:
- C++
- C


简而言之,成员函数实例相关,静态函数类相关。

虚函数,是一种特殊的成员函数,用来实现运行时多态。

  • 静态成员函数,可以不通过对象来调用,没有隐藏的this指针。
  • virtual函数一定要通过对象来调用,有隐藏的this指针。

所以,关键问题是static成员没有this指针。

static function 是静态决议(编译的时候就绑定了)

而virtual function 是动态决议的(运行时才绑定)

引用stackoverflow网友@Kerrek SB 的回答:

That would make no sense. The point of virtual member functions is that they are dispatched based on the dynamic type of the object instance on which they are called. On the other hand, static functions are not related to any instances and are rather a property of the class. Thus it makes no sense for them to be virtual. If you must, you can use a non-static dispatcher.

即是说:virtual成员函数的关键是动态类型绑定的实例调用。然而,静态函数和任何类的实例都不相关,它是class的属性。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值