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更加安全。


  • 相关阅读:
    ios开发之--把秒转换为天时分秒
    网络爬虫的类型
    网络爬虫的组成
    为什么要学网络爬虫
    什么是网络爬虫
    Windows 下安装 Python3
    Linux 下安装 Python3
    HTTP 代理
    HTTP Cookies
    爬虫的基本原理
  • 原文地址:https://www.cnblogs.com/javawebsoa/p/3177705.html
Copyright © 2011-2022 走看看