c与c++中struct的主要区别和c++中的struct与class的主要区别

1、c和c++中struct的主要区别

c中的struct不可以含有成员函数,而c++中的struct可以。

C语言

c中struct 是一种用于组合多个不同数据类型的数据成员的方式。struct 声明中的成员默认是公共的,并且不支持成员函数、访问控制和继承等概念。C中的struct通常被用于将多个相关数据组合在一起,但没有类的其他功能。

c 复制代码
struct Point {
    int x;
    int y;
};

int main() {
    struct Point p1;
    p1.x = 5;
    p1.y = 3;
    return 0;
}

C++

struct 是一种用于定义复合数据类型的方式,与C相似。然而,C++中的struct不仅可以包含数据成员,还可以包含成员函数、访问控制和继承等概念,与类(class)的功能非常接近。换句话说,C++中的struct和class的区别主要是默认的访问控制和继承方式不同。

cpp 复制代码
struct Point {
    int x;
    int y;
    void printCoordinates() {
        std::cout << "x: " << x << ", y: " << y << std::endl;
    }
};

int main() {
    Point p1;
    p1.x = 5;
    p1.y = 3;
    p1.printCoordinates();
    return 0;
}

c中的struct不可以含有成员函数,而c++中的struct可以。

2、c++中的struct与class的主要区别

c++中struct和class的主要区别在于默认的存取权限不同,struct默认为public,而class默认为private

cpp 复制代码
// 使用 struct 定义
struct MyStruct {
    int x;  // 默认 public
    void foo() { /* ... */ }  // 默认 public
private:
    int y;  // 可以显式声明为 private
};

// 使用 class 定义
class MyClass {
    int x;  // 默认 private
    void foo() { /* ... */ }  // 默认 private
public:
    int y;  // 可以显式声明为 public
};

int main() {
    MyStruct structObj;
    structObj.x = 10;  // 可以直接访问
    structObj.foo();   // 可以直接访问

    MyClass classObj;
    // classObj.x = 10;  // 错误,无法直接访问私有成员
    // classObj.foo();   // 错误,无法直接访问私有成员

    return 0;
}
相关推荐
BestOrNothing_201543 分钟前
(2)联想拯救者安装 Ubuntu 双系统前的 BIOS 设置全过程
linux·bios·拯救者·ubuntu22.04·联想lenovo
23.1 小时前
【Linux】grep命令终极指南
linux
巨斧空间掌门1 小时前
JDK17 下载 windows Linux
linux·运维·服务器
AI+程序员在路上1 小时前
CANopen 协议:介绍、调试命令与应用
linux·c语言·开发语言·网络
2401_831824961 小时前
基于C++的区块链实现
开发语言·c++·算法
We་ct1 小时前
LeetCode 918. 环形子数组的最大和:两种解法详解
前端·数据结构·算法·leetcode·typescript·动态规划·取反
愣头不青1 小时前
238.除了自身以外数组的乘积
数据结构·算法
爱编码的小八嘎2 小时前
C语言完美演绎4-4
c语言
汉克老师2 小时前
GESP5级C++考试语法知识(六、链表(一)单链表)
c++·链表·单链表·快慢指针·进阶·gesp5级·gesp五级
人工智能AI酱2 小时前
【AI深究】逻辑回归(Logistic Regression)全网最详细全流程详解与案例(附大量Python代码演示)| 数学原理、案例流程、代码演示及结果解读 | 决策边界、正则化、优缺点及工程建议
人工智能·python·算法·机器学习·ai·逻辑回归·正则化