c++中指向对象的指针为NULL时可以调用对象成员函数吗

问题貌似有点奇怪,指针都为NULL了怎么还可使用?但其实不是的,可以看以下代码:

 1 #include <iostream>
 2 using namespace std;
 3 
 4 class A 
 5 {
 6 public:
 7     void showSth();
 8 };
 9 int main()
10 {
11     A *a1 = NULL;
12     a1->showSth();
13     system("pause");
14     return 0;
15 }
16 
17 void A::showSth()
18 {
19     if (this == NULL) 
20     {
21         cout << "对象为NULL" << endl;
22         return;
23     }    
24     cout << "执行了函数" << endl;
25 }

输出结果如下:

c++中指向对象的指针为NULL时可以调用对象成员函数吗

可以看出虽然指针为NULL,但是依然可以使用a1->showSth()函数,说明指向对象的指针为NULL时可以调用对象成员函数。这也说明了类的成员函数保存地址显然与实例化的对象保存地址不同,不然要依赖实例化的对象地址寻址函数无疑是水中捞月;类中的函数完全可以看作是一个一般的函数只是多了个隐藏的this指针参数,当用a1->showSth时就把指针a1赋给了函数的this指针,这里有判断this是否为NULL,是则返回,那么显然是不会出错的了。

原文链接: https://www.cnblogs.com/blog-vincent-0x1F7/p/9672887.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

    c++中指向对象的指针为NULL时可以调用对象成员函数吗

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/281518

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月15日 上午5:43
下一篇 2023年2月15日 上午5:44

相关推荐