c和c++的区别(二)-----结构体的区别

结构体的区别

  • 类型上不再需要struct关键字,直接用结构体名即可

  • c++结构体中允许函数存在

  • 在结构体中声明,在结构体外实现(当然也可以在结构体中实现)

  • c++结构体中的函数中访问数据可以直接访问

  • 在c++没有写构造函数 / 权限限定的时候,结构体用法和c语言一样,结构体里面没有访问权限问题,类里面有访问权限问题,写了构造函数下面代码会报错

类的内容

把函数称为行为 / 方法 → 成员函数 → 描述一个对象的行为

把数据称为属性 / 特性 → 数据成员

struct MM                       //定义结构体和c语言一样
{
    void print()
    {
    cout<<name<<"\t"<<age<<endl;//在结构体声明,在结构体中实现     
    }
    void printData();           //在结构体中声明,在结构体外实现

    char name[20];
    int age;
}    
void MM::printData()
{
   cout<<name<<"\t"<<age<<endl;/*用结构体名限定,告诉编译器这个函数来自哪里*/   
}

在c++中用结构体名定义变量即可,不再需要struct关键字

int main()
{
     struct MM mm; //用c语言的方式也可以
     MM mm;        //用c++的方式
}

学会调用

和数据成员访问方式是一样的

  • 对象(结构体变量).成员

  • 对象指针->成员

  • (* 对象指针).成员

struct MM                  
{
    char name[20];
    int age;
    void print()
    {
    cout<<name<<"\t"<<age<<endl;//在结构体声明,在结构体中实现     
    }
    void printData();           //在结构体中声明,在结构体外实现
};   
void MM::printData()
{
   cout<<name<<"\t"<<age<<endl;
}

int main()
{
        struct MM girl={"小芳",18};  //用girl对象调用函数,打印的内容就是girl中的内容
        MM mm={"小丽",24};           //用mm对象调用函数,打印的内容就是mm中的内容
        girl.print();                //小芳 18
        (&mm)->printData();          //小丽 24
//指针方式
        MM* p=&mm;
        p->printData();              //小丽 24

}

结构体中的变量必须要通过结构体变量(结构体指针,结构体数组)的方式访问

c++结构体中的函数访问属性不需要,可以直接访问,在结构体外访问必须要通过结构体变量访问

//通过外部函数修改数据(修改年龄)
int &getAge()      //提供返回引用的函数
{
    return age;
}
int main(){

    struct MM girl={"小芳",18};  
    MM mm={"小丽",24}; 
 
    MM* p=&mm;
    p->printData(); //小丽 24

    p->getAge()=25; //c++结构体不需要这样修改数据,只要有结构体变量就可以在外面直接访问
    p->printData(); //小丽 25
    p->age=18;      //小丽 18
    p->printData();

}

在c++中定义结构体数组

不需要struct关键字,其他都一样

    MM array[3];//定义一个结构体数组
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

qiuqiuyaq

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值