news 2026/4/15 22:38:38

使用空指针对象调用成员函数

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
使用空指针对象调用成员函数

C++中,调用对象的成员函数时,编译器会将对象的地址作为this指针传入成员函数中作为隐藏参数,供成员函数使用。同时,对象的成员函数是属于类的,而不是属于对象的,因此即使使用空指针对象调用成员函数,若在成员函数中没有使用this指针,则程序依然能够正常执行。

但若在成员函数中使用了this指针,包括访问对象的成员变量,或是调用虚函数(需要通过this指针找到类的虚函数表),则this指针不能为空指针,也即是不能使用空指针对象调用成员函数。

下面的代码演示了使用空指针对象调用成员函数的不同情况:

#include <iostream> class Foo { public: Foo(void) { } void func(void) { printf("%s:%d\n", __func__, __LINE__); } void func2(void) { printf("%s:%d, a=%d\n", __func__, __LINE__, a); } virtual void func3(void) { printf("%s:%d\n", __func__, __LINE__); } private: int a; }; int main(void) { Foo *foo = nullptr; foo->func(); // OK foo->func2(); // Error foo->func3(); // Error return 0; }
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/16 9:01:49

零基础入门:dirsearch目录扫描工具详解

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 编写一个dirsearch入门教程脚本&#xff1a;1. 分步解释工具安装过程 2. 演示基础扫描命令 3. 解析典型输出结果 4. 包含5个实用示例 5. 常见问题解答。使用Markdown格式&#xff0…

作者头像 李华
网站建设 2026/4/16 7:21:46

Java新手必看:jstat从安装到实战图解指南

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 创建一个交互式jstat学习应用&#xff0c;包含&#xff1a;1) jstat安装配置向导&#xff1b;2) 各参数选项可视化解释&#xff1b;3) 模拟JVM状态供练习监控&#xff1b;4) 常见问…

作者头像 李华
网站建设 2026/4/16 9:01:35

Java新手必看:图解HttpServletRequest流操作原理

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 创建一个交互式学习教程&#xff0c;包含&#xff1a;1) Servlet请求处理流程动画演示&#xff1b;2) getInputStream()方法调用示意图&#xff1b;3) 可操作的代码沙箱(尝试触发错…

作者头像 李华
网站建设 2026/4/16 9:01:36

ZyperWin:AI如何革新Windows应用开发流程

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 使用ZyperWin的AI功能&#xff0c;开发一个Windows桌面应用&#xff0c;包含用户登录、数据可视化图表和文件导出功能。应用需要支持多语言界面&#xff08;至少中英文&#xff09;…

作者头像 李华
网站建设 2026/4/16 8:57:11

上位机状态机开发之旋转标定

上位机状态机开发之旋转标定 一 平移旋转标定/// <summary>/// 平移旋转标定/// </summary>/// <param name"sender"></param>/// <param name"e"></param>private void materialButton17_Click(object sender, Event…

作者头像 李华
网站建设 2026/4/15 21:45:30

leetcode 752. Open the Lock 打开转盘锁

Problem: 752. Open the Lock 打开转盘锁 解题过程 队列&#xff0c;两种可能的&#xff0c;某个字符1取模或者-110取模&#xff0c;共4个字符&#xff0c;所以共4*2种可能&#xff0c;而且0000到9999共10000种可能&#xff0c;所以集合不大的&#xff0c;可以用广度优先搜索&a…

作者头像 李华