首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

构造函数如何写

2012-07-08 
构造函数怎么写我新建了一个类,但是该类中有自己类的指针,他的构造函数该怎么写?class treenode{public:tr

构造函数怎么写
我新建了一个类,但是该类中有自己类的指针,他的构造函数该怎么写?
class treenode
{
public:
treenode(treenode* left,treenode* right);
virtual ~treenode();
virtual int GetValue();
private:
treenode* leftnode;
treenode* rightnode;
};

treenode::treenode(treenode* left,treenode* right)
{
if(leftnode) delete leftnode;
if(rightnode) delete rightnode;
leftnode=new treenode; //这两句因为用了new出错
rightnode=new treenode;
memcpy(leftnode,left,sizeof(treenode));
memcpy(rightnode,right,sizeof(treenode));
}

[解决办法]

C/C++ code
#include<iostream>using namespace std;class tree{    int data;    tree *left;    tree *right;public:    tree()//默认构造函数    {        data=0;left=NULL;right=NULL;    }        tree(int n):data(n),left(NULL),right(NULL){}//含参数的构造函数        ~tree()//析构函数    {        delete left;        delete right;    }        tree(const tree &a)//复制构造函数,const是防止a的值被更改(可以不要const)                       //一定要加引用,原因自己看书    {        data=a.data;        left=a.left;        right=a.right;    }    int getdata()//取节点值    {return data;}        tree* getleft()//取左指针    {return left;}        tree* getright()//取右指针    {return right;}};int main(){    tree a(5);//有参数构造    cout<<"输出a点的数值"<<endl;    cout<<a.getdata()<<endl;        tree b;//默认构造    cout<<"输出b点的数值"<<endl;    cout<<b.getdata()<<endl;        tree c(a);//复制构造    cout<<"输出c点的数值"<<endl;    cout<<c.getdata();    cout<<endl;    //程序结尾时系统自动调用析构函数    return 0;} 

热点排行