木其网络科技专业程序员代写http://www.xmsydw.com
程序员学历擅长经验网店链接
apenny硕士ASP.NET PHP 电子 通信设计 图像 编程 网络5年进入店铺
zheng_qianqian本科C语言 C++面向对象 Java3年进入店铺
guoguanl本科Java Web项目 JSP Hibernate Struts Mysql4年进入店铺

C++中的struct

问题:

C语言中有struct自定义结构体类型;

C++中也有struct类型,而且,与C++中面向对象主要的数据类型class还极为相似。

那么,C++中struct和class之间有什么区别,什么情况下使用struct呢?

解决办法:

从C++语言设计者Bjarne Stroustrup的大作《C++编程语言(特别版)》中归纳C++中struct和class的区别,有以下几点:

1. 成员的默认访问权限。struct的成员默认是public的;class的成员默认是private的;

2. 默认继承权限。在没有明确指定的情况下,struct的默认继承方式是public,class的默认继承方式是private;

3. 作者认为,struct S { ...不过是class S { public: ...的简写形式。

4. 但作者的习惯用法是,将struct用于所有成员都是public的那些类,而这样的类,“并不是完整的类型,不过是个数据结构”

5. 对于有人提出的说法“class能用于模板参数,而struct不能用于模板参数”,本人持谨慎的怀疑态度。

因为,《C++编程语言(特别版)》13.2中指出,template<class C>只是说C是一个类型名,它不必一定是某个类的名字。

类型名的概念比类名更广泛,不仅包括由类定义引进的类类型的名字,还包括语言的内部类型、枚举、typedef引进的名字等。


本人根据以上总结,决定在自己使用C++的编程中,始终将struct作为一种复杂的数据结构来使用,其成员只包含成员变量,不包含成员函数。

这样,struct在C++中就与C语言中的意义更为接近,但C++中的struct更加安全。


posted @ 2013-07-06 16:00  C语言程序  阅读(588)  评论(0编辑  收藏  举报
木其网络科技专业程序员代写http://www.xmsydw.com
程序员学历擅长经验网店链接
apenny硕士ASP.NET PHP 电子 通信设计 图像 编程 网络5年进入店铺
zheng_qianqian本科C语言 C++面向对象 Java3年进入店铺
guoguanl本科Java Web项目 JSP Hibernate Struts Mysql4年进入店铺