Обычно мы можем определить переменную для структуры С++, как в
struct foo {
int bar;
};
Можно ли также определить функции для структуры? Как мы будем использовать эти функции?
Ответ 1
Да, a struct идентичен class, за исключением уровня доступа по умолчанию (по-членски и по наследству). (и дополнительный смысл class несет при использовании с шаблоном)
Каждая функциональность, поддерживаемая классом, поддерживается структурой. Вы бы использовали методы так же, как вы использовали бы их для класса.
struct foo {
int bar;
foo() : bar(3) {} //look, a constructor
int getBar()
{
return bar;
}
};
foo f;
int y = f.getBar(); // y is 3
Ответ 2
Структуры могут иметь функции, подобные классам. Единственное различие заключается в том, что они по умолчанию общедоступны:
struct A {
void f() {}
};
Кроме того, структуры могут также иметь конструкторы и деструкторы.
struct A {
A() : x(5) {}
~A() {}
private: int x;
};