您的当前位置:首页正文

C++ 成员函数与成员变量的关系

2024-11-30 来源:个人技术集锦

在C++中,

#include <iostream>
using namespace std;

struct Data{
    int x = 10;
    int y() { return 20; }     
};

int main()
{
    Data* p=NULL;  // 不用 new 创建指针
    cout<<p->x<<endl;  //抛出异常
    cout<<p->y()<<endl; //程序能正常输出20
    return 0;
}

函数之所以会调用成功,是因为利用指针调用类的成员函数时,只跟指针的类型有关,而与其所指内容无关,也就是说只要指针类型是这个类的指针,那就可以用它来调用这个类的成员函数。如果这个函数做的事情跟类对象无关,就像你只返回一个常数,那这个函数看起来是正常运行的,但如果在类里访问了类的成员变量(比如返回x),那就会出错,因为此时要根据指针所指的内容去访问对应的成员变量,而指针实际上没有指向正确的地方,所以会出现内存访问错误。

显示全文