空指针可以调用成员函数?
来源:互联网 发布:莫知我哀上一句 编辑:程序博客网 时间:2024/06/05 07:49
有下面一个简单类:
class A{public: void fun(){ cout << "I'm class A"<<endl; }};
用一个空指针调用上面的fun函数:
A* pa = NULL;pa->fun();
讲道理,空指针应当是”不可用”的,自然也不能调用其成员函数了,但是结果却出乎意料地正确执行了:
为什么??其实,关键在于每个成员函数的this指针。
其实,c++类的成员函数与传统c的函数并没有什么不同,只是成员函数的第1个参数必须是this指针,只是这个参数是由编译器自动加上去的,调用时也不需要显示传递。
所以,上面的class A的成员函数fun的本质其实是这样子的:
void fun(A* this){ cout << "I'm class A"<<endl; }
而调用是其实这样子的:
A* pa = NULL;fun(pa);
可以看到,虽然this指针实参为NULL,但是fun函数根本没有用到this指针啊,this在这里只是打了个酱油而已!
但是,如果在成员函数中使用的成员变量,就不可避免要使用到this指针,若是这样,就不可避免的出现崩溃了。
综上所述:即便对象指针为NULL,只要成员函数没有使用非静态成员函数,就可以正常调用该成员函数。
0 0
- 空指针可以调用成员函数?
- 空指针调用成员函数
- 空指针调用成员函数
- 空指针也可以访问成员函数?
- 详解this指针--为什么空的对象指针可以调用成员函数
- 空指针为什么能调用成员函数?
- 空指针的成员函数调用
- 空指针的成员函数调用
- 空指针为什么能调用成员函数?
- 空指针为什么能调用成员函数?
- 空指针也能调用成员函数?
- 空指针也能调用成员函数?
- C++空指针调用成员函数
- 为什么通过空指针(NULL)可以正确调用一些类的成员函数?
- 为什么通过空指针(NULL)可以正确调用一些类的成员函数?
- 为什么通过空指针(NULL)可以正确调用类的部分成员函数
- 为什么通过空指针(NULL)可以正确调用一些类的成员函数?
- 浅析C++中的this指针 通过空指针(NULL)可以正确调用一些类的成员函数?
- JSP基础编程
- UART用来干什么?
- python语法基础整理
- gitlab + kubernets + openshift
- [View] -- View与Controller和Widget交互
- 空指针可以调用成员函数?
- 如何查找MySQL,PHP和Apache配置文件位置
- 外网无法内网FTP (200 Type set to A)
- Codeforces Round 10 A. Gabriel and Caterpillar 模拟
- 【hpuoj】数学问题
- 【转载自amobbs IDzhcj66】FATFS读取数据问题
- poj1222 EXTENDED LIGHTS OUT 开关问题
- 算法学习-求最大二查搜索子树
- WordPress CSV/excel导入插件 WP All Import Pro v4.2.9[正在汉化]