如果我有一个类具有这样的属性:
struct MyClass {
double **arowofpointers;
int capacity;
};
现在,如果任务说“确保主函数中的这行代码是合法的:
MyClass a(10); //makes a variable whose type is MyClass that has the capacity of 10
但是要确保main函数中的下面这行代码是不合法的:
MyClass a=10;
不过,main 函数中的以下代码行应该是合法的:
a=b+c;
其中a,b,c均为MyClass类型的变量。
我应该制作哪些构造函数?我应该在删除时设置什么吗?
最佳答案
像这样构建MyClass
类型的实例
MyClass a(10);
需要一个带有整数参数的构造函数:
class MyClass {
public:
MyClass(int param);
// ...
};
但由于默认情况下构造函数是隐式的(不幸的是),允许 MyClass a = 10;
,您需要将其显式化:
// This constructor must be called explicitly via MyClass(int)
explicit MyClass(int param);
这将使编译器在遇到 MyClass a = 10;
时报错。
对于您问题的运算符部分,您可能想看看 at this (“算术运算符”部分)。
关于c++ - 如何禁止简单的赋值 MyClass=int?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52423137/