我怎么能禁止一个简单的赋值MyClass = int?

San*_*chy 5 c++ constructor class

如果我有一个具有这样的属性的类:

struct MyClass {
   double **arowofpointers;
   int capacity;
};
Run Code Online (Sandbox Code Playgroud)

现在,如果任务说"确保主函数中的这行代码是合法的:

MyClass a(10); //makes a variable whose type is MyClass that has the capacity of 10
Run Code Online (Sandbox Code Playgroud)

但请确保main函数中的以下代码行不合法:

MyClass a=10;
Run Code Online (Sandbox Code Playgroud)

但是,主函数中代码的以下行应该是合法的:

a=b+c;
Run Code Online (Sandbox Code Playgroud)

其中,a,b和c都是类型为MyClass的变量.

我应该制作哪些构造函数?有什么我应该设置删除或什么?

lub*_*bgr 13

构建类型的实例MyClass是这样

MyClass a(10);
Run Code Online (Sandbox Code Playgroud)

需要一个带整数参数的构造函数:

class MyClass {
  public:
    MyClass(int param);

  // ...
};
Run Code Online (Sandbox Code Playgroud)

但是由于默认情况下构造函数是隐式的(这是不幸的),允许MyClass a = 10;,你需要明确它:

// This constructor must be called explicitly via MyClass(int)
explicit MyClass(int param);
Run Code Online (Sandbox Code Playgroud)

这将使编译器在遇到时抱怨MyClass a = 10;.

对于你的问题的操作部分,你可能想看看这个(以下简称"算术运算符"部分).