繁体   English   中英

何时使用指针对数据成员进行分类?

[英]C++ - When to use pointers to class data members?

我一直在用C ++进行编码,我想知道是否有人可以为我有时候有时需要指向类成员的指针的一般原因提供帮助,而其他时候却不需要。

例如,如果我们正在编码二叉树

我实现为

class BinaryTree{

    BinaryTree * left;
    BinaryTree * right;
    int val;

    public:
        BinaryTree(int v) {left = NULL; right = NULL; val = v;}
        //implementation of any other neccessary functions
};

我在左侧和右侧使用BinaryTree指针,因为没有该指针我们无法做到这一点,因为BinaryTree在该时间点不存在。

还有其他原因吗? 有没有办法解决?

另外,如果我们放置指针成员函数,隐式析构函数将处理它们的删除吗?

谢谢你的时间。

这是一个盒子:

一个盒子,在这里代表一个结构

它的体积约为一立方米,因此只能存储总体积为一立方米的对象。 而且它绝对不能存储两个相同的盒子本身。 请注意,这两个盒子中的每一个还需要包含两个类似的盒子,依此类推,依此类推。

这是一个struct

struct BinaryTree {
    BinaryTree left;
    BinaryTree right;
    int val;
};

它具有等于sizeof(BinaryTree)的有限大小,因此它只能存储总大小小于或等于sizeof(BinaryTree) 而且它绝对不能存储 BinaryTree类型的两个值。 请注意,这两个值中的每一个还需要存储两个类似的值,依此类推,依此类推。

由于结构实例不能包含同一结构的其他实例,并且我们需要定义它们之间的关系,并且树肯定是分层的,因此我们在此处使用指针。

注意,所谓的指向T的原始指针(即T* )唯一要做的就是指向T 由于指向是此类指针的唯一任务,因此销毁不会销毁指向的对象,而只会销毁指针

存在一些行为类似于指针的类型,但也执行其他任务,例如管理指向对象的生存期。 这些是C ++ 11的std::unique_ptrstd::shared_ptr等。 我强烈建议使用它们。

对象通常包含仅需要根据运行时条件或参数创建的成员。 您希望尽可能延迟创建。 这是使用指针的常见情况。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM