虚函数(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();
}

编译错误

 

posted @   jihite  阅读(6964)  评论(1编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
历史上的今天:
2013-03-21 ubuntu 设置管理 集锦
2013-03-21 linux touch命令
点击右上角即可分享
微信分享提示