C++静态成员函数不能调用非静态成员变量(详解)

发布时间 - 2026-01-10 22:01:00    点击率:

其实我们从直观上可以很好的理解静态成员函数不能调用非静态成员变量这句话因为无论是静态成员函数还是静态成员变量,它们

都是在类的范畴之类的,及在类的整个生存周期里始终只能存在一份。然而非静态成员变量和非静态成员函数是针对类的对象而言。

然而从本质上来说类的静态成员函数的函数形参中没有默认的this指针,导致不能调用具体实例对象的成员。

下面我们来测试一下:

先在静态成员函数中调用静态成员变量:

#include <iostream>
using namespace std;

class vpoet
{
public:
  static int a;
  int b;

public:
  vpoet(int data)
  {
    b=data;
  }

  static void statictestfun1()
  {
    cout<<"static a="<<a<<endl;
  }
};

int vpoet::a=10;

int main()
{
  vpoet *V;
  V=new vpoet(5);
  vpoet::statictestfun1();
  return 0;
}

调用成功,截图如下

现在我们再静态成员函数中调用非静态成员变量

#include <iostream>
using namespace std;

class vpoet
{
public:
  static int a;
  int b;

public:
  vpoet(int data)
  {
    b=data;
  }

  static void statictestfun1()
  {
    cout<<"static b="<<b<<endl;
  }
};

int vpoet::a=10;

int main()
{
  vpoet *V;
  V=new vpoet(5);
  vpoet::statictestfun1();
  return 0;
}

编译下提示了错误:

大意是在静态成员函数中引用了类的非静态成员变量b。

其实这里可以再深入分析下:

静态成员变量的函数形参中没有默认的this指针指向类对象本身。所以当我们调用对象的非静态成员变量的时候它不能识别该变量

然而对于静态成员变量而言,其存在于整个类中,为每个类对象共有,所以就算没有默认的this形参仍然可以识别该静态成员变量

以上就是小编为大家带来的C++静态成员函数不能调用非静态成员变量(详解)全部内容了,希望大家多多支持~


# 静态成员函数不能调用非静态成员变量  # C++的静态成员变量和静态成员函数你了解多少  # C++的静态成员变量和静态成员函数详解  # C++类的静态成员变量与静态成员函数详解  # 详解c++ 静态成员变量  # C++中静态成员函数与静态成员变量(static )  # C++静态成员变量和静态成员函数的使用方法总结  # 关于C++静态成员函数访问非静态成员变量的问题  # C++分析讲解类的静态成员变量是什么  # 是在  # 很好  # 这句话  # 当我们  # 先在  # 小编  # 本质上  # 大家多多  # 类中  # 测试一下  # pre  # center  # strong  # cpp  # include  # class  # brush  # background  # 形参中  # std 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Laravel如何实现数据库事务?(DB Facade示例)  html5的keygen标签为什么废弃_替代方案说明【解答】  利用 Google AI 进行 YouTube 视频 SEO 描述优化  PHP正则匹配日期和时间(时间戳转换)的实例代码  Python面向对象测试方法_mock解析【教程】  如何在Windows环境下新建FTP站点并设置权限?  如何正确选择百度移动适配建站域名?  高端智能建站公司优选:品牌定制与SEO优化一站式服务  Laravel如何使用Seeder填充数据_Laravel模型工厂Factory批量生成测试数据【方法】  香港服务器建站指南:外贸独立站搭建与跨境电商配置流程  Laravel怎么实现软删除SoftDeletes_Laravel模型回收站功能与数据恢复【步骤】  三星网站视频制作教程下载,三星w23网页如何全屏?  如何将凡科建站内容保存为本地文件?  Android仿QQ列表左滑删除操作  laravel怎么为API路由添加签名中间件保护_laravel API路由签名中间件保护方法  HTML5空格和nbsp有啥关系_nbsp的作用及使用场景【说明】  Laravel如何使用Guzzle调用外部接口_Laravel发起HTTP请求与JSON数据解析【详解】  无锡营销型网站制作公司,无锡网选车牌流程?  Laravel怎么实现模型属性的自动加密  jQuery中的100个技巧汇总  Python文件流缓冲机制_IO性能解析【教程】  百度输入法ai组件怎么删除 百度输入法ai组件移除工具  微信小程序 canvas开发实例及注意事项  详解CentOS6.5 安装 MySQL5.1.71的方法  深圳网站制作平台,深圳市做网站好的公司有哪些?  标题:Vue + Vuex + JWT 身份认证的正确实践与常见误区解析  如何登录建站主机?访问步骤全解析  如何在 Python 中将列表项按字母顺序编号(a.、b.、c. …)  Laravel中DTO是什么概念_在Laravel项目中使用数据传输对象(DTO)  零服务器AI建站解决方案:快速部署与云端平台低成本实践  Windows Hello人脸识别突然无法使用  Laravel如何优雅地处理服务层_在Laravel中使用Service层和Repository层  Laravel API资源(Resource)怎么用_格式化Laravel API响应的最佳实践  儿童网站界面设计图片,中国少年儿童教育网站-怎么去注册?  Laravel如何与Pusher实现实时通信?(WebSocket示例)  Laravel怎么判断请求类型_Laravel Request isMethod用法  jQuery validate插件功能与用法详解  大学网站设计制作软件有哪些,如何将网站制作成自己app?  python中快速进行多个字符替换的方法小结  如何在阿里云虚拟服务器快速搭建网站?  如何在万网ECS上快速搭建专属网站?  Laravel如何使用集合(Collections)进行数据处理_Laravel Collection常用方法与技巧  Laravel如何优化应用性能?(缓存和优化命令)  韩国网站服务器搭建指南:VPS选购、域名解析与DNS配置推荐  Laravel storage目录权限问题_Laravel文件写入权限设置  rsync同步时出现rsync: failed to set times on “xxxx”: Operation not permitted  公司门户网站制作流程,华为官网怎么做?  canvas 画布在主流浏览器中的尺寸限制详细介绍  如何快速搭建自助建站会员专属系统?  高性能网站服务器配置指南:安全稳定与高效建站核心方案