静态成员函数调用非静态成员变量辨析

本文探讨了C++中静态成员函数无法访问非静态成员变量的原因,解释了静态成员函数不依赖具体对象且与所有对象共享的特性。通过实验,作者指出在静态成员函数中传入对象参数可以调用非静态成员变量。
摘要由CSDN通过智能技术生成

首先我们做一个简单的小实验,具体看如下代码段

类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,好奇心满满的我忍不住问一句,为什么静态成员函数不能调用非静态成员变量呢?

要解决这个问题,我们就必须回归到静态成员函数的特点——除了上述提到的静态成员函数不能访问非静态成员变量&#

  • 5
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值