有关于构造函数里有对象的问题

来源:百度知道 编辑:UC知道 时间:2024/06/21 18:49:10
class node
{
public:
node();
node(int i,char c='0');
node(int i,char c, node *p,node *n);

private:
int idata;
char cdata;
node *prior;
node *next;
};

class linklist
{
public:

linklist(int i, char c);

private:
node head;
node *pcurrent;
};

linklist::linklist(int i, char c):head( i, c)// head(int i,int c)写成这样就编译出错, head( i, c)写成这样就正确,为什么??????还有这里的 “:”号是什么作用,叫什么?

谢谢帮忙解答

linklist::linklist(int i, char c):head( i, c)// head(int i,int c)写成这样就编译出错, head( i, c)写成这样就正确,因为那是调用node的构造函数初始化,不是定义.
linklist::linklist(int i, char c):head( i, c)// 这种是初始化列表的形式
:后跟初始的数据,你可以看看 构造函数的初始化列表 的章节.