首先我们做一个简单的小实验,具体看如下代码段
类A的声明(放在A.h头文件中)
#pragma once
#include<iostream>
using namespace std;
class A {
private:
static int a; // 静态成员变量a
int b; // 非静态成员变量b
public:
// 无参静态成员函数func
static void func();
类A中成员函数的实现(放在A.cpp源文件中)
#include"A.h"
// 无参静态成员函数func
void A::func() {
cout << "无参非静态成员函数调用" << endl;
b = 100; // 访问非静态成员变量
}
此时都不用运行,就发现编译器报错如下图所示
很显然,由于用static关键字修饰,无参成员函数func是静态成员函数,静态成员函数不能访问非静态成员变量,而b又是非静态成员变量,因此编译器报错,问题解决。
However,好奇心满满的我忍不住问一句,为什么静态成员函数不能调用非静态成员变量呢?
要解决这个问题,我们就必须回归到静态成员函数的特点——除了上述提到的静态成员函数不能访问非静态成员变量&#