学习C++遇到的问题2:空的对象指针调用成员函数然后访问数据成员居然没报错?
题目如图所示:
刚开始我想当然的认为用一个空的对象指针去调用一个函数会发生运行时错误,后来答案成功运行了。当我们调用的函数没有访问成员数据时应该是不会报错的。
之后,我又实验了一下两种情况,当空对象指针调用的函数中有用到成员数据时一个会报错,一个却没有报错,不太理解为什么。
#include <iostream>
using namespace std;
class Demo {
public:
Demo() : count(0) { }
void say2(const string &msg) {
fprintf(stderr, "%s\n", msg.c_str());
cout << this->count << endl;
}
int count;
};
int main() {
Demo* v;
v->say2("hello world");
}
运行结果:
#include <iostream>
using namespace std;
class Demo {
public:
Demo() : count(0) { }
// ~Demo() { }
void say2() {
cout << this->count << endl;
}
int count;
};
int main() {
Demo* v;
v->say2();
}
运行结果: