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

Struct(结构体) C和C++区别

  1. c语言中,结构体是不允许有函数的,但是在c++中可以;

    如下,c++中结构体:

    c 复制代码
    struct PetInfo
    {
        string name; // Pet name
        string type; // Pet type
        int age; // Pet age
        CostInfo cost;
        PetInfo() // Default constructor
        {
            name = "unknown";
            type = "unknown";
            age = 0;
            cost.food = cost.medical = cost.license = cost.misc = 0.00;
        }
    };
  2. c语言中结构体不能继承,但是c++可以继承;

    如下,结构体B继承结构体A:

    c 复制代码
    struct B : public A//结构B继承A
    {
        int c;
        B(int a,int b,int c);
        virtual ~B();
    
        virtual void Display(void);
        friend istream& operator >>(istream& in,struct B &b);
        friend ostream& operator <<(ostream& out,struct B &b);
    };
  3. c语言中结构体的使用必须要用别名或者使用struct;

    如下:

    c 复制代码
    struct student
    {
    	int age;
    	int num;
    	int sex;
    };
    
    struct sutdent stu;
    
    或者
    
    typedef struct student
    {
    	int age;
    	int num;
    	int sex;
    } stu;
  4. c语言中默认是共有的,不可以修改权限,在c++中权限是可以修改的。

  5. c语言中不可以初始化数据成员,c++中可以初始化

    如下:

    c 复制代码
    struct Employee
    {
       string name;    // 员工姓名
       int vacationDays,    // 允许的年假
       daysUsed;    //已使用的年假天数
       Employee (string n ="",int d = 0)    // 构造函数
       {
           name = n;
           vacationDays = 10;
           daysUsed = d;
       }
    };
  6. c语言中空结构体大小为0,c++中空结构体为1。

相关推荐
迷途之人不知返4 分钟前
优先级队列:priority_queue
数据结构·c++
曦夜日长8 分钟前
C++ STL容器string(一):string的变量细节、默认函数的认识以及常用接口的使用
java·开发语言·c++
代码中介商10 分钟前
C++ STL 标准模板库完全指南:从容器到迭代器
开发语言·c++·stl
winner888112 分钟前
C++ 构造函数、析构函数、虚函数、虚析构
开发语言·c++
想唱rap13 分钟前
应用层协议与序列化
linux·运维·服务器·网络·数据结构·c++·算法
许长安16 分钟前
protobuf 使用详解
c++·经验分享·笔记·中间件
Soley19 分钟前
用 Boost.Log 封装一个更顺手的 C++17 日志库:GoodLog
c++
HAPPY酷25 分钟前
从Public到Private:UE5 C++类创建路径差异全解析
java·c++·ue5
无敌昊哥战神25 分钟前
【LeetCode 37】解数独 (Sudoku Solver) —— 回溯法详解 (Python/C/C++)
c语言·c++·python·算法·leetcode
AI进化营-智能译站30 分钟前
ROS2 C++开发系列08-传感器数据缓存与指令解析方式之数组、向量与字符串实战
开发语言·c++·缓存·ai