C ++构造函数设置值

时间:2014-01-05 21:32:22

标签: c++ constructor

我正在尝试用C ++编写构造函数(我是新的)。

我的尝试:

class Tree
{
    private:
        int leaf;

    public:
        Tree(int leaf); //constructor
};

Tree::Tree(int leaf) //constructor
{
strcpy(this->leaf, leaf);
}

这是怎么做的正确方法?因为我发现许多不同版本的srcpy,没有等等。

3 个答案:

答案 0 :(得分:7)

不,不是。 strcpy用于复制以null结尾的字符串。使用构造函数初始化列表:

Tree::Tree(int leaf) : leaf(leaf) {}

另请注意,您的构造函数允许从intTree的隐式转换。所以你可以做这件事:

Tree t = 4 + 5;

如果您不想要此行为,请将构造函数标记为显式:

explicit Tree(int leaf);

答案 1 :(得分:1)

您可以像这样简单地初始化int:

Tree::Tree(int leaf) //constructor
  : leaf(leaf)
{
}
不需要

strcpy,它适用于C字符串。它没有编译,因为它需要一个char*指针。

答案 2 :(得分:0)

如果确实希望使用某种内存复制功能,则可以使用std::copy,但m_leaf = leaf同样有效并且更易于阅读。请注意我使用m_leaf而不是leaf - 在所有成员变量之前添加前缀m_是常见的(更多关于匈牙利表示法here)。