Хорошо, отвечаю на ваши вопросы по одному:
class MyClass : public State // MyClass inherits State?
именно так.MyClass наследует (публично, что обычно является единственным видом наследования, о котором вы заботитесь) от State.В буквальном смысле, MyClass "является" State - все, что верно в отношении State, также верно и в отношении 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 означает, что объект, переданный в качестве параметра, не будет изменен.Фактически это конструктор копирования - специальный конструктор, используемый для создания MyClass в качестве клона существующего объекта.Опять же, это личное, поэтому большая часть мира не может это назвать.&
указывает на передачу параметра по ссылке - это предотвращает копирование объекта компилятором, и часто это хорошо.
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
. Ваша вторая форма этого конструктора очень похожа на вашу первую форму,но первый - с использованием списка инициализации - считается лучшей формой.