【发布时间】:2017-06-17 22:11:29
【问题描述】:
我需要创建一个类,它的对象可以初始化但不能赋值。
我想也许我可以通过不定义赋值运算符来做到这一点,但是编译器使用构造函数来进行赋值。
我需要这样:
Object a=1; // OK
a=1; // Error
我该怎么做?
【问题讨论】:
-
编译器不使用构造函数进行赋值。它使用构造函数创建
Object类型的对象,然后使用赋值运算符将该对象分配给a。 -
出于好奇,这个的用例是什么?
-
很难用细节来解释,但它是一个“参数传输”类,几乎兼容所有字符串类型(char、std::string、CString 和我的程序中使用的一些其他类型,以防止意外覆盖。我需要它,因为它是一个很难使用模板重写的旧项目。以前,所有参数都通过 char * 传递,这意味着危险。
-
@MooingDuck -- 代码中的第一行需要一个构造函数,该构造函数可以使用
int类型的参数和一个可访问的复制构造函数调用乙>。但问题是关于第二行,这就是我所说的。 -
@MooingDuck -- 它需要复制构造函数,而不是复制赋值运算符。
标签: c++ initialization variable-assignment