我是C++的新手,请帮助我弄清楚这些运算符的工作方式
class MyCalss : public State // MyClass inherits State?
{
private
MyClass(){} // Constructor for MyClass?
MyClass(const MyClass&); // const means that invoking object will be not changed? What the meaning of '&' symbol? MyClass&
MyClass& operator = (const MyClass&) // What this statement exactly do? is it some kind operation overloading?
}
例如我有构造函数
MyClass2::MyClass2(int i):BaseEntity(id),
m_iTotal(5),
m_iMonye(5),
m_iLevel(10){}
:BaseEntity(id)在这里是什么意思?
我可以这样重写吗?
MyClass2::MyClass2(int i):BaseEntity(id)
{
m_iTotal = 5;
m_iMonye = 5;
m_iLevel = 10;
}
最佳答案
好的,一次回答一个问题:
class MyClass : public State // MyClass inherits State?
正是如此。 MyClass从State继承(公开地,这通常是您关心的唯一一种继承)。从字面上看,MyClass是“状态”,关于状态的所有情况也都关于MyClass。
private
MyClass(){} // Constructor for MyClass?
是的,
MyClass(){}
是MyClass的构造函数,特别是在这种情况下,不带参数也不执行任何操作(没什么特别的-仍然会分配内存,等等)。但是,由于您已经将MyClass()设置为private
,因此没有别的方法可以调用它,这意味着您只能从MyClass方法中创建MyClass对象(不带参数)。MyClass(const MyClass&); // const means that invoking object will be not changed? What the meaning of '&' symbol? MyClass&
是的,const表示将不会更改作为参数传递的对象。实际上,这是Copy构造函数-一种特殊的构造函数,用于创建MyClass作为现有对象的克隆。同样,它是私有(private)的,因此世界上大多数人都不能称之为。
&
指示通过引用传递参数-这样可以防止编译器复制对象,这通常是一件好事。MyClass& operator = (const MyClass&) // What this statement exactly do? is it some kind operation overloading?
这是复制分配运算符,用于允许类似“instance_a = instance_b;”的语句。
请注意,除非您自己定义它们,否则编译器将为您生成所有这三个文件的默认版本。
MyClass2::MyClass2(int i):BaseEntity(id),
m_iTotal(5),
m_iMonye(5),
m_iLevel(10){}
BaseEntity(id)
与其他三行非常相似;它告诉编译器,当构造MyClass2时,应使用参数BaseEntity
调用父类id
的构造函数。此构造函数的第二种形式与您的第一种形式非常相似,但第一种形式-使用初始化列表-被认为是更好的形式。