虚函数(virtual)为啥不能是static

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

static成员没有this指针是关键!
static function都是静态决议的(编译的时候就绑定了)
而virtual function 是动态决议的(运行时候才绑定)

例证

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
#include <bitset>
using  namespace  std;
 
class  A
{
     public :
         A( int  a)  {  this ->val2 = a; }
         static  void  get_val() {  this ->val2 = 4; cout <<  "hello"  << val << endl; }
     private :
         static  int  val;
         int  val2;
};
int  A::val = 4;
 
int  main()
{
     A a(2);
     a.get_val();
}

编译错误

 





本文转自jihite博客园博客,原文链接:http://www.cnblogs.com/kaituorensheng/p/3616956.html,如需转载请自行联系原作者

相关文章
|
3月前
|
C++
C++析构函数定义为virtual虚函数,有什么作用?
C++析构函数定义为virtual虚函数,有什么作用?
28 0
|
1月前
|
C# 索引
C#学习相关系列之abstract和virtual用法
C#学习相关系列之abstract和virtual用法
|
4月前
|
存储 设计模式 算法
[C++] static静态成员变量/函数的用法
[C++] static静态成员变量/函数的用法
32 1
|
4月前
|
程序员
虚函数的修饰符:final override(仅能虚函数)
虚函数的修饰符:final override(仅能虚函数)
30 0
|
C#
C# 虚方法(virtual)案例详解
C# 虚方法(virtual)案例详解
149 3
|
测试技术 C#
C#语法-虚方法详解 Virtual 虚函数
虚方法 / Virtual 本文提供全流程,中文翻译。 Chinar 坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 —— 高分辨率用户请根据需求调整网页缩放比例) Chinar —— 心...
1119 0