2013-03-25 69 views
1

我们可以在C++结构体(而不是类)中使用访问说明符 - privateprotectedC++结构中的私有和受保护的可用性

此外,访问修饰符存在于C吗?

+7

这是一个非常基本的问题,可以通过快速检查任何C++参考或教程来回答。 – 2013-03-25 14:47:26

+1

[C++中struct和class有什么区别](http://stackoverflow.com/questions/92859/what-are-the-differences-between-struct-and-class-in-c) – 2013-03-25 14:51:48

+0

[Is'私人'一个C关键字?](http://stackoverflow.com/questions/623219/is-private-ac-keyword?rq=1) – 2013-03-25 14:59:30

回答

0

是的,您可以在C++结构中使用public,protected,private

否,接入修饰语并不在C.

存在

在C++中,classstruct之间的唯一区别是一个class的成员默认都是private,而struct的成员是由默认public。这意味着C++ struct可以具有成员函数,构造函数,重载运算符并使用class的任何其他功能。

1

struct与C++中的class差别不大。默认的可见性是公开的而不是私有的。 C不支持这些。

+0

它应该阅读:而不是'私人' – scones 2013-03-25 14:46:40

+0

更正,谢谢 – Thibaut 2013-03-25 14:47:06

0

一个struct和C++中的class之间的唯一区别是一个struct的成员默认都是publicclass的成员是private默认。你可以在它们中使用访问说明符,就像你可以在其中使用其他任何东西一样。

有在C.

3

在C没有访问说明++这样的结构是相同的,与默认范围是不同于私人公众是类的默认范围,唯一的区别类。在C访问说明符不存在,但毕竟你会用它来做什么?

0

我们可以在C++的struct中使用访问说明符private和protected吗?

是的。 A struct是一类;唯一的区别是默认的可访问性(publicstructprivateclass)如果您没有指定它。

也是在C语言中允许使用访问修饰符吗?访问说明符是否真的存在于C?

不,C没有访问说明符。

5

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

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

struct foo { 
private: 
    // ... 
}; 

是相同的:

class foo: { 
    // ... 
}; 

这已经answered elsewhere

这意味着privatepublicprotected关键字是在任何一个struct定义或定义class同样有效。另一方面,如果您打算使用访问修饰符,最好将您的类型定义为class,而不是struct。意见将在此不同,但IMHO的struct关键字应该用于POD (Plain Old Data)类型,或对可能在C.被定义为struct小号

C++结构,严格地说类型,是从C的结构有很大不同,并且是几乎与C++类相同。但是,如果我看到C++中定义为struct的东西,我期望(或者至少比较喜欢)它是类似于C struct的东西。