<分区>
为什么可以在未初始化的对象上使用类成员函数(至少我相信它是未初始化的)。以下运行没有错误:
// A.h
class A {
public:
explicit A(int n) : n_(n) {};
~A() {};
int foo() {
return n_;
};
int bar(int i) {
return i;
};
private:
int n_;
};
与
// main.cc
#include <iostream>
#include "A.h"
int main(int argc, char **argv) {
A *myClass;
std::cout << myClass->bar(5) << "\n";
}
现在,肯定尝试 myClass->foo();
失败了,但是为什么我们甚至可以使用 bar()
,因为我们只声明了一个指向A
存在,并且被称为myClass
?这种编码风格是否可以接受/是否有理由使用这种方法?