В основном, хотя struct
и typedef
не нужны.Лучше написано на C ++ как:
class Foo {
public:
Foo(Dog dog, Cat *cat) : d(dog), c(cat) {}
private:
Dog d;
Cat *c;
};
Строка за строкой:
class Foo {
То же, что struct Foo
.Единственное отличие в C ++ между class
и struct
состоит в том, что члены struct
являются открытыми по умолчанию, а члены class
являются частными.Но нам нужны где-то открытые члены, поэтому мы можем обойти это с помощью ...
public:
Все, что после этого, является публичным, и любой может получить доступ к нему с Foo
объектом.*
Это конструктор для Foo.Создается новый объект Foo
с Dog
и Cat *
.: d(dog), c(cat)
является списком инициализаторов.Это то же самое, что и this->d = dog; this->c = cat;
, за исключением, вероятно, быстрее.Если вы не хотите делать это таким образом, вы можете пропустить this->
, если где-то не возникнет конфликт имен.{}
- это тело функции, пустое, потому что мы переместили назначение в список инициализатора.
private:
Напротив public:
.Вещи, объявленные после этого, могут быть доступны только внутри нашего класса и предназначены только для внутреннего использования.
Dog d;
Cat *c;
Это внутренние переменные класса, например члены struct
.