将NULL参数传递给构造函数

时间:2013-05-05 08:19:50

标签: c++ constructor

这是我的构造函数:

    Tree::Tree(char* Pinfo, Tree treeL, Tree treeR){
    info=Pinfo;
    Tree* pointPsubTreeL = &treeL;
    if(pointPsubTreeL){
        cout<<"it is not NULL"<<endl;
        subTreeL=treeL.getCopy();}
    else{
            //it never enter here even if treeL == NULL
        cout<<"it is NULL"<<endl;
        subTreeL=NULL;}
    subTreeR=treeR.getCopy();

}

我不知道为什么但是NULL变成类似于对象树,然后我不知道参数是否为NULL。 换句话说,当我在树中到达这个NULL元素时,它的行为就像一棵树。 任何想法为什么以及如何避免这种情况?

1 个答案:

答案 0 :(得分:0)

您在参数中取Tree,这些参数始终是对象。每当您将Tree传递给此方法时,将通过调用Tree的复制构造函数来创建该树的新副本。

我假设你想要的方法是Tree(char* Pinfo, Tree* treeL, Tree* treeR)

这样传入NULL会有效,但你必须将指针传递给左右树。将指针传递给Tree将意味着您不需要重复,但可能需要您在堆上分配它们以保持指针有效。