当前位置:首页 » 《休闲阅读》 » 正文

C++ struct 和 class 的区别、C++结构体和C结构体的区别等基础知识。

17 人参与  2024年10月13日 11:21  分类 : 《休闲阅读》  评论

点击全文阅读


特性C++ structC++ classC struct
默认访问控制符publicprivate全部公开
支持成员函数
继承支持
模板支持
运算符重载

在C++中,structclass 是两种非常相似的用户定义类型,二者有一些关键区别。C++的 struct 与 C 语言中的 struct 也存在一些差异,主要是因为 C++ 提供了面向对象编程的特性。

C++中 structclass 的区别

默认访问控制符不同

struct 默认的成员访问控制是 publicclass 默认的成员访问控制是 private

例如:

        struct MyStruct {
            int x; // 默认是public
        };

        class MyClass {
            int x; // 默认是private
        };

   2.继承的访问控制符不同

struct 默认的继承方式是 public 继承。class 默认的继承方式是 private 继承。

例如:

        struct BaseStruct {};
        struct DerivedStruct : BaseStruct {};  // public继承

        class BaseClass {};
        class DerivedClass : BaseClass {};    // private继承

语义上的差别

在设计层面上,class 通常用于表示 面向对象编程中的类,包含封装、继承和多态等特性。struct 更常用于表示 简单的数据结构,虽然它也可以像 class 一样定义成员函数和继承关系。

C++ 结构体和 C 结构体的区别

成员函数

在 C++ 中,struct 可以包含 成员函数构造函数析构函数,甚至支持 重载运算符。而在 C 语言中,struct 只能包含 数据成员

例如:

// C++中的结构体
struct Point {
    int x, y;
    Point(int a, int b) : x(a), y(b) {}  // 构造函数
    void display() { 
        std::cout << "Point(" << x << ", " << y << ")\n"; 
    }
};

// C语言中的结构体
struct Point_C {
    int x, y;
};
 2.访问控制

C++ 中的 struct 可以使用访问控制符 public, private, 和 protected 来控制成员的访问权限,C 语言中的 struct 没有访问控制机制,所有成员都是 公开的

例如:

struct Point {
private:
    int x, y;
public:
    Point(int a, int b) : x(a), y(b) {}
    void display() { std::cout << x << ", " << y << "\n"; }
};

3.继承

在 C++ 中,struct 可以支持继承,类似于类的继承关系。C 语言中的 struct 不支持继承。

例如:

struct Base {
    int x;
};

struct Derived : Base {
    int y;
};

4.模板支持

C++ 中的 struct 可以与模板一起使用,而 C 语言中的 struct 不支持模板。

例如:

template <typename T>
struct Box {
    T value;
};

示例代码对比

C++ struct 示例

#include <iostream>
struct Point {
    int x, y;
    
    // 构造函数
    Point(int a, int b) : x(a), y(b) {}

    // 成员函数
    void display() {
        std::cout << "Point(" << x << ", " << y << ")\n";
    }
};

int main() {
    Point p(1, 2);
    p.display();
    return 0;
}

C 结构体示例

#include <stdio.h>

struct Point {
    int x, y;
};

int main() {
    struct Point p = {1, 2};
    printf("Point(%d, %d)\n", p.x, p.y);
    return 0;
}


 


点击全文阅读


本文链接:http://zhangshiyu.com/post/171274.html

<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

最新文章

  • 结婚当天,女友成了别***子全集阅读_[陈婷朋友林恩]节选高光片段速递‌
  • 我选择彻底消失后,高冷女总裁不淡定了限时免费章节抢先看_秦茜茹夏朗明袁林章节免费试读
  • 为捧小青梅,男友让我演渣女青梅傅司乘结局+番外+完结_为捧小青梅,男友让我演渣女青梅傅司乘结局+番外+完结
  • 愿你不染人间愁好文分享(傅慎川沈兮棠)_愿你不染人间愁好文分享
  • 弹幕教我手把手攻略po文男主老公他侄子小说***章节抢先看_「顾衔青凤眼茹素」小说节选试读
  • 爱也沧沧,恨也沧沧高质量好文(贺景川宋南乔)全书免费_(贺景川宋南乔)爱也沧沧,恨也沧沧高质量好文后续(贺景川宋南乔)
  • (番外)+(结局)贺景川宋南乔(爱也沧沧,恨也沧沧全书+番外+后续)_(贺景川宋南乔)列表_笔趣阁(爱也沧沧,恨也沧沧全书+番外+后续)
  • 爱也沧沧,恨也沧沧全书+番外(爱也沧沧,恨也沧沧全书+番外)_爱也沧沧,恨也沧沧全书+番外(贺景川宋南乔)列表_笔趣阁(贺景川宋南乔)
  • [外出打工十年,只为养老婆和她的小三]精彩节选免费试读_李先生爱全冷汗节选推荐
  • 手撕偷我和儿子身份的管家父子精彩节选试读_[顾氏顾总芳芳]大结局
  • 情灼似星坠+后续+结局(谢淮序江照雪)列表_情灼似星坠+后续+结局
  • [册封当天,皇帝为了青梅把我打到流产]剧情悬念章节分段解锁_「李长珩李俊皇贵妃」小说精彩节选推荐

    关于我们 | 我要投稿 | 免责申明

    Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1