Функция для структуры C ++

93

Обычно мы можем определить переменную для структуры C ++, как в

struct foo {
  int bar;
};

Можем ли мы также определить функции для структуры? Как бы мы использовали эти функции?

Джон
источник
4
Да. То же, что и для класса на C ++
DumbCoder

Ответы:

142

Да, a structидентичен a, 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
Лучиан Григоре
источник
37

Структуры могут иметь такие же функции, как классы. Единственная разница в том, что они по умолчанию общедоступны:

struct A {
    void f() {}
};

Кроме того, структуры также могут иметь конструкторы и деструкторы.

struct A {
    A() : x(5) {}
    ~A() {}

    private: int x;
};
0x499602D2
источник