C++私有结构

Das*_*aru 17 c++ struct structure private-members

我已经读过类和结构(除了函数)之间的主要区别是类成员默认为private,而结构成员默认为public.

这意味着结构成员可以是私有的.我的问题是:你能拥有私人结构成员吗?如果可以的话,使用私人会员的目的是什么?你怎么会访问它们?

Alo*_*ave 27

是结构可以有私有成员,您只需要使用访问说明符.

struct Mystruct
{
    private:
       m_data;

};
Run Code Online (Sandbox Code Playgroud)

只有结构和类别之间的区别是:

  • 访问说明符默认为private为class,public为public
  • 对于struct,继承默认为private,对于struct,则为public

你怎么能访问它们?
就像你访问一个类的私人成员一样.即:它们只能在结构成员函数内访问,而不能在派生结构等中访问.


bdo*_*lan 5

和之间的唯一区别是默认访问(除了一些奇怪的模板情况,请参阅下面的 Alf 评论)。这意味着您可以像在类中一样访问私有成员:structclass

struct foo {
  int get_X() { return x; }
  void set_X(int x_) { x = x_; }
private:
  int x;
};
Run Code Online (Sandbox Code Playgroud)

那么,您是否使用structclass纯粹是风格问题。我倾向于struct在所有成员都是公共成员时使用(例如,如果它是一个没有成员变量而只有公共函数的函子类)。

  • 好吧,关于关键字,模板参数列表也有所不同,例如`template< template< class Foo > class Bar >`。你不能用`struct`来写。:-) (4认同)
  • 您不能为此使用 `typename`(这将是语法错误)。干杯, (2认同)
  • @AlfP.Steinbach 我相信我说的对,不能在_任何类型的模板_中使用关键字`struct`,因为必须使用`class`或`typename`。您使用模板模板参数制作示例的事实实际上有点令人困惑。 (2认同)