c++ - 通过指针调用函数而不从对象分配内存

标签 c++ class pointers member-functions

我有一个类

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/

相关文章:

c++ - 在 C++17 中 i++ + i++ 会评估什么?

c - 修改代码以通过引用传递

C++ shared_ptr - 附加到一个新的原始指针?

php - 其他语言上的 C 指针等效项

c++ - 为什么 implicit == on map<<int,MyClass> 不编译?

C++ 设计(基类中的行为,派生类中提供的私有(private)成员)

java - 类方法未执行正确的计算

C# 如何找到类的非创建对象?

c++ - 将宏定义的函数转换为 C++ 中的模板

c++ - 如何在 vector 中搜索结构项?