zoukankan      html  css  js  c++  java
  • 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更加安全。


  • 相关阅读:
    java jar 后台运行
    【Objective-C】内存管理
    GitHub Gist 指南
    模板发送java邮件
    JDK环境配置
    新装mysql数据库登陆不上去(账号密码正确)
    一个简单的爬取b站up下所有视频的所有评论信息的爬虫
    hexo Nunjucks Errors 解决方法
    新版正方教务系统导出课程表-油猴脚本
    ACM-图论-同余最短路
  • 原文地址:https://www.cnblogs.com/javawebsoa/p/3177705.html
Copyright © 2011-2022 走看看