c++中struct和class的区别小结

 更新时间:2023年08月30日 08:53:57   作者:wniuniu_  
在C++中,class和struct都是用于定义自定义数据类型的关键字,本文主要介绍了c++中struct和class的区别小结,具有一定的参考价值,感兴趣的可以了解一下

前言

在C++中,class和struct都是用于定义自定义数据类型的关键字,但它们之间有一些区别。这些区别主要涉及成员的默认访问权限和继承。

正题

成员的默认访问权限:

  • 在class中,默认情况下,成员的访问权限是private,这意味着除了类的内部,其他地方无法直接访问类的私有成员。
  • 在struct中,默认情况下,成员的访问权限是public,这意味着类的外部也可以直接访问结构体的成员。

继承:

  • 当使用class定义类时,默认的继承访问权限是private,这意味着基类的成员对派生类是private的,除非通过继承控制符进行了显式修改。
  • 当使用struct定义类时,默认的继承访问权限是public,这意味着基类的成员对派生类是public的,除非通过继承控制符进行了显式修改。

以下是一个示例,演示了class和struct之间的区别:

#include <iostream>
class ClassExample {
    int privateMember;
public:
    int publicMember;
    ClassExample() : privateMember(0), publicMember(0) {}
    void ShowPrivate() {
        std::cout << "Private: " << privateMember << std::endl;
    }
};
struct StructExample {
    int privateMember;
public:
    int publicMember;
    StructExample() : privateMember(0), publicMember(0) {}
    void ShowPrivate() {
        std::cout << "Private: " << privateMember << std::endl;
    }
};
int main() {
    ClassExample classObj;
    StructExample structObj;
    classObj.publicMember = 42;
    structObj.publicMember = 42;
    classObj.privateMember;   // 无法访问,因为 privateMember 是 private 的
    structObj.privateMember;  // 可以访问,因为 privateMember 是 public 的
    return 0;
}

总之,class和struct的主要区别在于默认的成员访问权限和继承访问权限。然而,这两者在其他方面都可以用来定义类,包括成员变量、成员函数、构造函数等。选择使用哪个关键字取决于你希望如何组织和访问类的成员。

到此这篇关于c++中struct和class的区别小结的文章就介绍到这了,更多相关c++ struct class内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • C语言中宏定义的教学详解

    C语言中宏定义的教学详解

    在C语言中,宏定义是预处理器的指令,主要用于为各种数据创建别名,这篇文章主要来和大家分享一下宏定义的相关基础知识,需要的小伙伴可以了解一下
    2023-07-07
  • 学习二维动态数组指针做矩阵运算的方法

    学习二维动态数组指针做矩阵运算的方法

    这片文章介绍了如何利用二维动态数组指针做矩阵运算,需要的朋友可以参考下
    2015-07-07
  • C/C++实现获取硬盘序列号的示例代码

    C/C++实现获取硬盘序列号的示例代码

    获取硬盘的序列号、型号和固件版本号,此类功能通常用于做硬盘绑定或硬件验证操作,下面我们就来学习一下如何使用C/C++实现获取硬盘序列号吧
    2023-11-11
  • C语言中的指针新手初阶指南

    C语言中的指针新手初阶指南

    指针是C语言的灵魂,精华之所在,指针强大而危险,用得好是一大利器,用得不好是一大潜在危害,下面这篇文章主要给大家介绍了C语言中指针的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下
    2021-10-10
  • C 语言基础教程(我的C之旅开始了)[十]

    C 语言基础教程(我的C之旅开始了)[十]

    C 语言基础教程(我的C之旅开始了)[十]...
    2007-02-02
  • C++类型转换和IO流操作处理教程

    C++类型转换和IO流操作处理教程

    这篇文章主要给大家介绍了关于C++类型转换和IO流操作处理的相关资料,标准C++为了加强类型转换的可视性,引入了四种命名的强制类型转换操作符,文中给出了详细的代码示例,需要的朋友可以参考下
    2023-08-08
  • C++基于对话框的程序的框架实例

    C++基于对话框的程序的框架实例

    这篇文章主要介绍了C++基于对话框的程序的框架,以实例形式讲述了C++对话框程序框架,有助于深入理解基于C++的Windows程序设计,需要的朋友可以参考下
    2014-10-10
  • 基于opencv实现视频中的颜色识别功能

    基于opencv实现视频中的颜色识别功能

    这篇文章主要介绍了基于opencv实现视频中的颜色识别功能,文章详细介绍了颜色识别的原理及opencv中的颜色模型,基于c++代码实现颜色识别功能,需要的朋友可以参考下
    2022-07-07
  • C语言指针的长度和类型深入分析

    C语言指针的长度和类型深入分析

    这篇文章主要介绍了C语言指针的长度和类型,针对常见的各个类型进行了相对详细的分析,需要的朋友可以参考下
    2014-09-09
  • C++处理图存储的方式分享

    C++处理图存储的方式分享

    这篇文章主要介绍了C++处理图存储的方式分享,文章围绕邻接矩阵、邻接表、链式前向的主题展开详细内容,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-03-03

最新评论