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++ OpenCV绘制几何图形

    C++ OpenCV绘制几何图形

    这篇文章主要为大家详细介绍了C++ OpenCV绘制几何图形,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-10-10
  • Qt(C++)调用工业相机Basler的SDK使用示例

    Qt(C++)调用工业相机Basler的SDK使用示例

    这篇文章主要介绍了Qt(C++)调用工业相机Basler的SDK使用示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-03-03
  • C++超详细介绍模板

    C++超详细介绍模板

    人们需要编写多个形式和功能都相似的函数,因此有了函数模板来减少重复劳动;人们也需要编写多个形式和功能都相似的类,于是 C++ 引人了类模板的概念,编译器从类模板可以自动生成多个类,避免了程序员的重复劳动
    2022-07-07
  • C/C++ 引用作为函数的返回值方式

    C/C++ 引用作为函数的返回值方式

    这篇文章主要介绍了C/C++ 引用作为函数的返回值方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-07-07
  • C++中操作符的前置与后置有什么区别

    C++中操作符的前置与后置有什么区别

    C 语言提供了丰富的操作符,有:算术操作符,移位操作符,位操作符,赋值操作符,单目操作符,关系操作符,逻辑操作符,条件操作符等。接下了让我们详细了解掌握它
    2022-05-05
  • C语言判断语句和if语句形式及多层if使用示例

    C语言判断语句和if语句形式及多层if使用示例

    这篇文章主要为大家介绍了C语言判断语句和if语句形式及多层if使用示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-09-09
  • C语言中字节对齐的几种方式小结

    C语言中字节对齐的几种方式小结

    本文介绍了C语言中的字节对齐机制,包括自然对齐、预处理指令和编译器属性语法三种对齐方式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2025-12-12
  • C++数据结构二叉搜索树的实现应用与分析

    C++数据结构二叉搜索树的实现应用与分析

    从这篇博客开始,我就要和大家介绍有关二叉搜索树的知识,它还衍生出了两棵树——AVL树和红黑树,在后面两篇博客我都会介绍。今天先从二叉搜索树开始引入
    2022-02-02
  • C++内置类型与自定义类型的对比分析

    C++内置类型与自定义类型的对比分析

    本文对比了C与C++的类型系统,C内置类型简洁贴近硬件,C++扩展了布尔、宽字符及固定大小类型,并增强自定义类型功能,支持封装、继承、多态,提升代码安全性与模块化
    2025-08-08
  • C++中string转换为char*类型返回后乱码问题解决

    C++中string转换为char*类型返回后乱码问题解决

    这篇文章主要介绍了C++中string转换为char*类型返回后乱码问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-07-07

最新评论