c++ - 如何在C++中初始化一个类?

标签 c++ class initialization

我正在制作一个简单的二叉树程序,我想初始化左右节点。我一直在尝试这样做:

class Tree{
     Tree* left = new Tree();
     Tree* right = new Tree();
}

这应该在堆上给我一个可访问的内存,我可以用它来访问左右节点,对吗?但是,情况似乎并非如此。我也试过通过构造函数来做这件事,但没有成功。

有没有办法在 C++ 中正确初始化类? 感谢您的宝贵时间。

最佳答案

你可以像这样创建一个

class Tree
{
 public:
    Tree* left;
    Tree* right;
    Tree() // default constructor
    { 
        left = nullptr;
        right = nullptr;
    }
    Tree(Tree *Tleft,Tree *Tright) // parameterised constructor
    { 
        left = Tleft;
        right = Tright;
    }

    ~Tree() // Destructor
    { 
        delete left;
        delete right; 
    }
};

您可以使用默认构造函数Tree类初始化为nullptr,并使用参数化构造函数进行初始化用户值,即 Tree 节点,

void main()
{
    Tree *node1 = new Tree(); //using default constructor
    Tree *node2 = new Tree(); //using default constructor
    Tree *node3 = new Tree(node1, node2); // using parameterised constructor
} 

关于c++ - 如何在C++中初始化一个类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43038503/

相关文章:

c++ - 将数组传递给递归函数

python - 我应该包括什么内容以进行boost.python扩展?

java - new <childclass>() 和 new <parentclass>() 有什么区别?

python - 在 Python 中初始化对象列表

c++ - 在自己的初始化器中使用变量

c++ - 如何用字符串文字优雅地初始化 vector<char *>?

c++ - QVector 与 QList

c++ - c++强制使用指针的场景

php - 在 PHP 中正确使用数据库类?

java - 如何实例化一个类<?扩展标签>对象?