• struct与class的区别


        C++中的struct是对C中struct的扩充,它已经不再只是一个包含不同数据类型的数据结构,因为其扩充了太多功能。总的来说,C++中struct和class极其相似,比如,struct能包含成员函数、能继承、能实现多态等。但是二者之间也存在着不可忽视的区别,如下:

    1) 默认的继承访问权限不同。struct默认是public继承,class默认是private继承。

        子类属于哪种继承取决于子类而不是基类,也就是说struct可以继承class,class也可以继承struct,默认的继承访问权限就取决于子类是struct还是class。如果不想使用默认的继承方式,可以指明使用哪种继承。如下:

    struct A{};

    class B : A{}; //private继承

    struct C : B{}; //public继承


    2) struct作为数据结构的实现体,它默认的数据访问控制是public的,而class作为对象的实现体,它默认的成员变量访问控制是private的。  

        虽然struct和class使用时基本可以互换,但是还是应该用struct处理更像数据结构的场景,用class处理更像对象的场景。


    3) class关键字还用于定义模板参数,但是struct不用于定义模板参数


    4) struct在定义时,如果内部没有构造函数和虚函数,可以用{}赋初值(用初始化列表对数据进行按顺序的初始化),而class不能这样初始化,除非使用和struct一样的public继承。这里struct体现出数据结构的特性,而不是类的特性。如果struct内部有构造函数或虚函数,那么就无法使用{}赋初值,这时struct表现得更像class。


    参考文献:

          1> C++中struct和class的区别

          2> C++中struct和class的区别

  • 相关阅读:
    Socket编程实现客户端与服务器一对一聊天
    HttpClient获取页面信息与Jsoup封装获取
    代码推送
    re正则
    MySQL 的主从复制
    关于前后端的缓存
    session/cookie/token
    如何保证缓存(redis)与数据库(MySQL)的一致性
    进程与线程(程序与任务)
    QA/QC
  • 原文地址:https://www.cnblogs.com/Lilu-1226/p/10776581.html
Copyright © 2020-2023  润新知