首页 > 其他 > 详细

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

时间:2014-03-23 10:05:21      阅读:353      评论:0      收藏:0      [点我收藏+]
  • 静态成员函数,可以不通过对象来调用,也即没有隐藏的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();
}

编译错误

bubuko.com,布布扣

虚函数(virtual)为啥不能是static,布布扣,bubuko.com

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

原文:http://www.cnblogs.com/kaituorensheng/p/3616956.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!