当我尝试初始化构造函数时,我注意到了一些奇怪的错误。如果我只是展示它们是最简单的。
#include <iostream>
class MyClass {
public:
int var1, var2, var3;
MyClass() {
var1, var2, var3 = 0;
}
MyClass(int one, int two, int three) {
var1 = one;
var2 = two;
var3 = three;
}
};
int main()
{
MyClass object1(5, 6, 7);
std::cout << object1.var1; // This works
MyClass object2();
std::cout << object2.var1; //Error object must have class type.
MyClass object3 = MyClass();
std::cout << object3.var1; //Now it works for some reason
delete &object1;
MyClass ojbect1(5, 6, 7); //error redefinition; multiple initialization
}
如您所见,由于某种原因,当我初始化 object2 时,不会打印值,除非与 object3 一样,语法写为 MyClass object3 = MyClass();
此外,当我删除 object1 时,我必须使用 & 运算符。这让我很惊讶在这个问题中考虑到 在 C++ 中删除一个对象,他们不使用与号。
最后,当我尝试重新初始化 myobject 时,编译器抱怨有多个定义。我尝试省略 MyClass 关键字,但它仍然不允许。
现在我当然可以用各种变通方法让程序做我想做的事,但我不明白为什么这些事情不能像我在这里写的那样做。