复制没有参数的构造函数

Sub*_* S. 0 c++ copy-constructor

写了这个小类,每次创建这个类的对象时都会生成一个UUID.

#include <boost/uuid/uuid.hpp>
#include <boost/uuid/uuid_generators.hpp>
#include <boost/uuid/uuid_io.hpp>    

class myClass {

public:

    boost::uuids::uuid GetUUID();

    virtual ~myClass();

    myClass() {   // constructor
        mId = boost::uuids::random_generator()();
        std::cout<< "object created with uuid " << mId <<std::endl;
    }

private:

    boost::uuids::uuid mId;

}
Run Code Online (Sandbox Code Playgroud)

在某些时候,我正在将这些对象推送到向量,并使用简单赋值运算符将该向量与另一个向量等同.为了确保新向量中的对象不生成新的UUID,我想编写一个复制构造函数.但正如您所看到的,构造函数不需要参数.所以我不知道如何编写复制构造函数.此外,如果我有多个变量而不是一个UUID,我该如何处理这种情况?

Luc*_*ore 5

您需要以下签名:

 myClass(const myClass& other)
 {
     mId = other.mId;
 }
Run Code Online (Sandbox Code Playgroud)

以及赋值运算符

 myClass& operator=(const myClass& other)
 {
     mId = other.mId;
     return *this;
 }
Run Code Online (Sandbox Code Playgroud)

请注意,如果您不实现这些,编译器生成的将执行浅拷贝,因此不会生成新的UUID.但你应该让他们遵守三个规则(毕竟你确实有一个析构函数).