C++结构中私有和受保护的可用性

Pri*_*fsr 2 c c++

我们可以在C++结构中使用访问说明符 - privateprotected- 而不是类吗?

另外,C中是否存在访问修饰符?

Kei*_*son 8

C没有C++样式的访问修饰符.AC struct只是一个包含其他对象类型成员的复合对象类型.

在C++中,struct和一个class几乎相同的; 唯一的区别是public默认情况下结构成员是默认的,而类成员是private默认的.所以这:

struct foo {
private:
    // ...
};
Run Code Online (Sandbox Code Playgroud)

相当于:

class foo: {
    // ...
};
Run Code Online (Sandbox Code Playgroud)

这已在其他地方得到解答.

这意味着private,publicprotected关键字是在任何一个同样有效的struct定义或class定义.

另一方面,作为编程风格的问题,如果你要使用访问修饰符,最好将你的类型定义为a class而不是a struct.意见将有所不同,但恕我直言,struct关键字应该用于POD(普通旧数据)类型,或者可以struct在C中定义为s的类型.

严格地说,C++结构与C结构非常不同,并且与C++类几乎完全相同.但是,如果我将C++中定义的内容视为a struct,我希望(或者至少更喜欢)它与C类似struct.