c++ - 在 C++ 中初始化为自身的对象

标签 c++ class object initialization self

例如,我有代码:

class test{
    public:

    test(){
        cout<<endl<<"TEST";
    }

    void another(){
        cout<<endl<<"Another";
    }

};

int main(){
    test chk = chk;
    chk.another();
}

在这里,我对新创建的类型为 test 的对象进行了初始化。

这样的初始化是否有特殊用途,除了初始化 test chk; 而不是 test chk = chk; 之外,这样的初始化是否做任何事情?

我知道如果对象被初始化为自身,则构造函数不能被调用,但为什么?

我想了解更多有关对象自身初始化的信息。

最佳答案

你可以这样写:

test chk = chk;

[basic.scope.declarative]/p1

The potential scope of the first j begins immediately after that j

implicit copy constructor因此被调用。您可能已经使用自己的执行了一些额外的初始化:

test(const test&) {
  cout << endl << "copy ctor";
}

请记住,这不是一个好的做法,它甚至可能导致 undefined behavior在某些情况下,Clang 总是发出 -Wuninitialized 警告。

关于c++ - 在 C++ 中初始化为自身的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31759210/

相关文章:

c++ - Qt grabWindow 坐标从 GetCursorPos 和 GetWindowRect 转移

c++ - OpenGL三角形未绘制

java - 在java中,为什么Object类在成为一个类之后仍如此命名?

python - 获取当前类(class)的名称?

javascript - array.push() 重复相同的值

c++对象输出错误信息

c++ - 重载运算符时二进制表达式的无效操作数

c++ - 提取可变参数模板参数包并将其用于类型特征元函数中的另一个可变参数模板?

javascript - 使用 jQuery 将整数添加到 css 类

javascript - 原型(prototype)、对象、构造函数、 "this"、函数