zoukankan      html  css  js  c++  java
  • 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 }

    输出结果如下:

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

  • 相关阅读:
    Java系列学习(六)-数组
    MVC系列学习(十)-生成URL与表单
    Java系列学习(五)-流程控制语句
    Java系列学习(四)-运算计算
    asp.net mvc学习笔记
    Oracle网络传输的加密和完整性验证
    mvc学习
    linq 学习
    dapper学习入门
    entity framework 学习备忘录
  • 原文地址:https://www.cnblogs.com/blog-vincent-0x1F7/p/9672887.html
Copyright © 2011-2022 走看看