Код: Выделить всё
enum class ObjectType {
STRING,
NUMBER,
};
struct Object {
Object(ObjectType type) : type(type) {} // Line 1
ObjectType type;
};
struct StrObject : public Object {
StrObject(const std::string &str) : Object(ObjectType::STRING), string(str) {} // Line 2
std::string string;
};
Аналогично в строке 2, это конструктор для структуры StrObject, которая принимает ссылку на строку в качестве аргумента и вызывает ее str. Опять же, следующий синтаксис я изо всех сил пытаюсь понять: Object(ObjectType::STRING), string(str) {.
Я предполагаю, что происходит в Line 2 - Object(ObjectType::STRING) вызывает конструктор родительской структуры со значением перечисления STRING, которому в строке 1 присваивается тип переменная-член через бит type(type)? Аналогично, в строке 2 string(str) устанавливает значение переменной-члена string в любое значение, переданное в конструктор при создании экземпляра StrObject.
Предполагая, что вышеизложенное является правильной интерпретацией, почему это происходит перед телом функции {}, а не внутри, как в случае с классами на других языках (например, Python, Javascript и т. д.) )?
Подробнее здесь: https://stackoverflow.com/questions/781 ... n-c-struct
Мобильная версия