XZ Blog XZ Blog
首页
  • 人体姿态估计
  • 2D-3D-Lifting
  • 动作质量评估
  • 基于RGBD视觉信息的异常行为识别
  • 基于RGB视频的行为识别
  • 大模型应用
  • 网络结构

    • Transformer
    • GCN
    • Graph Transformers
    • Diffusion Model
  • 深度学习
  • 论文解读
  • 后端开发
  • Git
  • 博客搭建
  • Debug
  • 面试
  • 实用技巧
  • 友情链接
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

xzhouzeng

@渐行。
首页
  • 人体姿态估计
  • 2D-3D-Lifting
  • 动作质量评估
  • 基于RGBD视觉信息的异常行为识别
  • 基于RGB视频的行为识别
  • 大模型应用
  • 网络结构

    • Transformer
    • GCN
    • Graph Transformers
    • Diffusion Model
  • 深度学习
  • 论文解读
  • 后端开发
  • Git
  • 博客搭建
  • Debug
  • 面试
  • 实用技巧
  • 友情链接
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • 后端开发

    • cmake介绍
    • \{}统一初始化方
    • C++11新特性
    • C++标准推荐使用标准库头文件
    • C++动态内存分配和静态的区别
    • C++类函数后面加const的作用
    • C++类和结构区别
      • C++内存区域
      • nullptr与NULL
      • priority_queue使用
      • string , cstring , string h 的区别
      • using与typedef定义别名区别
      • vector中[]和at访问区别
      • 常量指针和指针常量
      • 空类大小及相关介绍
      • 容器emplace与push操作
      • 数据结构操作——时间复杂度
      • 智能指针(Smart Pointers)
      • 最大堆的实现
    • Git

    • 博客搭建

    • Debug

    • python开发

    • 技术
    • 后端开发
    xzhouzeng
    2023-03-20
    目录

    C++类和结构区别

    # C++类和结构区别

    Created: March 17, 2024 10:48 PM

    在C++中,结构体(struct)和类(class)是两种支持面向对象编程的主要构造。它们之间有很多相似之处,但也有一些关键区别。在C语言中,仅有结构体,而没有类的概念。

    # C++中的结构体与类

    # 相似之处

    1. 成员变量和成员函数:C++中的结构体和类都可以包含数据成员(成员变量)和成员函数(方法)。
    2. 继承:结构体和类都可以用来实现继承。
    3. 访问控制:结构体和类都支持三种访问控制级别:public、protected和private。

    # 主要区别

    1. 默认的访问控制:类的成员默认是**private的,而结构体的成员默认是public**的。
      • 在类中,如果不显式指定访问控制符,成员将默认为**private**。
      • 在结构体中,如果不显式指定访问控制符,成员将默认为**public**。
    2. 默认的继承类型:如果继承类型(public、protected或private)未被明确指定,
      • 类从其他类继承时,默认为**private**继承。
      • 结构体从其他类或结构体继承时,默认为**public**继承。

    # 为什么存在两种不同的构造?

    尽管C++中的类和结构体在功能上非常相似,但它们的存在有其历史原因和使用场景:

    • 历史原因:C++保留了来自其祖先语言C的**struct**关键字。在C中,结构体只能包含数据成员,不能包含函数。C++扩展了结构体的功能,允许它们包含函数,并引入了类作为支持面向对象编程的一种更完整的方式。
    • 使用场景:结构体通常用于需要打包数据的场合,而类用于需要封装和继承的复杂对象。这一区别更多是基于约定,而不是语言强制的。

    # 示例

    # C++中的结构体

    cppCopy code
    struct MyStruct {
        int data; // 默认公开
        void display() { // 默认公开
            std::cout << data << std::endl;
        }
    };
    
    
    1
    2
    3
    4
    5
    6
    7
    8

    # C++中的类

    cppCopy code
    class MyClass {
    private: // 默认私有
        int data;
    public:
        void setData(int d) { data = d; }
        void display() {
            std::cout << data << std::endl;
        }
    };
    
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11

    尽管C++中的结构体和类非常相似,选择使用哪一个通常取决于你的编程风格和需要表示的数据结构的复杂性。

    编辑 (opens new window)
    C++类函数后面加const的作用
    C++内存区域

    ← C++类函数后面加const的作用 C++内存区域→

    最近更新
    01
    VideoLLMs
    03-20
    02
    Video2Script
    12-07
    03
    多模态
    11-09
    更多文章>
    Theme by Vdoing | Copyright © 2022-2024 xzhouzeng | MIT License
    • 跟随系统
    • 浅色模式
    • 深色模式
    • 阅读模式