如何从构造函数复制 T(const T&) 调用对象 T?[已结束]

How to call object T from constructor copy T(const T&)? [closed]

提问人:Marco E 提问时间:2/2/2020 更新时间:2/2/2020 访问量:85

问:


这个问题是由一个错别字或一个无法再重现的问题引起的。虽然类似的问题可能在这里成为主题,但这个问题的解决方式不太可能帮助未来的读者。

3年前关闭。

我有一个复制构造函数。该对象有两个属性,比方说 和 。这意味着我需要将参数中对象的颜色和高度分配给我的对象。问题是我不知道如何调用参数,因为它没有命名。T::T(const T&)colorheight

如果参数被命名,比如说 t,代码如下所示:

T::T(const T& t) {
    color = t.color
    height = t.height
}

但就我而言,没有争论。在以下代码中,我应该用什么替换问号:?

T::T(const T&) {
    color = ?.color
    height = ?.height
}

谢谢你的帮助!

C++ C++11 常量 复制构造函数 const-reference

评论

6赞 JaMiT 2/2/2020
真正的问题是缺少参数的名称。是什么阻止你给它起个名字?(您显然可以编辑函数定义。
4赞 Some programmer dude 2/2/2020
这毫无意义。当你明确需要(并使用)它时,为什么不提供参数名称?
3赞 dtell 2/2/2020
随机猜测:你看到了复制 ctor 的定义,现在认为禁止给参数起个名字?无需担心,只需命名参数并像第一个示例中一样使用它。T::T(const T&)
1赞 Some programmer dude 2/2/2020
将我和 dtell 的评论放在一起,您似乎对函数声明定义之间的区别感到困惑。在 C++ 中,您可以省略声明中的参数变量名称,如果需要,甚至可以省略定义(实现)。但是,如果您需要访问函数定义(实现)中的参数,则必须为该参数提供显式名称。
1赞 Marco E 2/2/2020
这是否意味着声明是 T::T(const T&) 并且我可以用 T::T(const T& t) 实现它?

答:

4赞 HolyBlackCat 2/2/2020 #1

如果不命名参数,这是不可能的。

省略参数名称时,这样做是因为你不需要它。如果您确实需要它,请不要省略它。

3赞 Marco E 2/2/2020 #2

正如 @some-programmer-dude 所提到的,我对函数声明和定义之间的区别感到困惑。

我的声明是,但这并没有阻止我在我的定义中定义一个参数 tT::T(const T&)T::T(const T& t)

谢谢!