我有一个类
class BTree {
public:
int val;
BTree *next;
BTree *child;
BTree* putVal(int v) {
BTree *temp = new BTree;
temp->val = v;
return temp;
}
}*root;
可以用作吗?
root = root->putVal(12);
printf("%x %d\n",root,root->val);
上面在 putVal 调用之前打印了 root =0,在调用之后打印了一些内存位置。 这可能是非常糟糕的代码,但我只想知道它是否被允许并且会按预期工作?
如何调用函数?
从调用语法看来,每个变量都有一个指向类中函数的指针的拷贝。在那种情况下,这不应该起作用,因为尚未为对象分配内存。
最佳答案
不,这是不允许的。不允许使用空指针,“调用成员函数”算作使用。
您可以使用空指针做一些不算使用的事情。将它们与其他指针进行比较,并分配新值是最常见的两种。
根本原因是空指针不指向对象,调用对象的成员函数确实需要一个实际的对象。
关于c++ - 通过指针调用函数而不从对象分配内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24528886/