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


  • 相关阅读:
    JS 函数—函数内部:arguments、this、,caller、new.target
    JS—函数概述
    Number API
    Object-API—02
    03构建之法阅读笔记之一
    4月第二次每周总结(4月15日)
    电梯演讲
    个人作业3—折线图
    个人作业3—china.jsp设置页面
    每周总结(4月8日)
  • 原文地址:https://www.cnblogs.com/java20130726/p/3218463.html
Copyright © 2011-2022 走看看