c++ - 是否可以在 C++ 中声明 operator= private 并同时由编译器合成

标签 c++ compiler-construction operators

我对运算符 = 很满意,它由编译器自动合成。但我希望它是私有(private)的,并且不想用类型的页面长定义来膨胀我的代码

Foo& Foo::operator= (const Foo& foo)
{
    if (this == &foo)
        return *this;

    member1_    = foo.member1_;
    member2_    = foo.member2_;
    member3_    = foo.member2_;
    ...
    member1000_ = foo.member1000_;

    return *this;
} 

请问有什么办法吗?

最佳答案

在 C++11 中是:

class Foo
{
    Foo& operator=(const Foo& source) = default;
public:
    // ...
};

遗憾的是,大多数编译器尚未实现新标准的这一部分。

关于c++ - 是否可以在 C++ 中声明 operator= private 并同时由编译器合成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9006508/

相关文章:

c++ - 如果我的 Visual C++ 自定义内存分配器返回未正确对齐的 block ,会发生什么情况?

c++ - 如何停止 OpenMP 2.0 的并行区域

java - 数据类型的表示是否应由其语言规范严格指定?

c - 消息 "the ABI of passing struct with a flexible array member has changed in GCC 4.4"重要吗?

具有空检查的 C# AND 运算符

c++ - 不使用 OpenCV 对帧进行灰度化的有效方法

c++ - Zeromq:使用 Linux [REP] 和 Windows [REQ] 连接,没有消息到达

java - Eclipse 中的自定义编译时类加载?

c++ - 在类或结构中使用运算符?

syntax - CoffeeScript 中的问号等于是什么意思?