C++中结构体与结构体变量 和 类与对象的区别

具体区别如下:

结构体 -> 结构体变量

{

        结构体:struct student{  具体是多少,年龄,名字,性别,成绩      }

        结构体变量: stu{   名字:张三,年龄:18,成绩:96    }

}

类 ->对象  (类是对象的模板 ,对象是类的实例化)

class student

{

年龄,名字,性别,成绩 

}

#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

using namespace std;

class Car{
public:  //公共权限
    string color;
    string brand;
    string type;
    int year;

    void (*printfCarInfo)(string color,string brand,string type,int year);
    void (*carRun)(string type);    //函数指针,执行车运行的函数
    void (*carStop)(string type);   //函数指针,执行车停止的函数
};

void bmwThreePrintfInfo(string color,string brand,string type,int year)
{
    string str = "车的品牌是:"+brand+",型号是:"+type+",颜色是:"+color+"上市年限是:" + std::to_string(year);
    cout << str <<endl;
}

void AodiA6PrintfInfo(string color,string brand,string type,int year)
{
    string str = "车的品牌是:"+brand+",型号是:"+type+",颜色是:"+color+"上市年限是:" + std::to_string(year);
    cout << str <<endl;

}

int main()
{
    Car BMWthree;
    BMWthree.color = "白色";
    BMWthree.brand = "宝马";
    BMWthree.type = "3系";
    BMWthree.year = 2023;

    BMWthree.printfCarInfo = bmwThreePrintfInfo;   //函数指针指向具体的函数的时候
    BMWthree.printfCarInfo(BMWthree.color,BMWthree.brand,BMWthree.type,BMWthree.year);


    Car *AodiA6 = new Car();
    //AodiA6 = (struct Car*)malloc(sizeof (struct Car));
    AodiA6 ->type = "A6";
    AodiA6 ->year = 2018;
    AodiA6 ->brand = "奥迪";
    AodiA6 ->color = "黑色";

    AodiA6 ->printfCarInfo = AodiA6PrintfInfo;
    AodiA6 ->printfCarInfo(AodiA6 ->color,AodiA6 ->brand,AodiA6 ->type,AodiA6 ->year);
    return 0;
}

以上的代码在C++中:

1.char * 类型会报错,应当改成 string ,包含头文件string.h

2.printf打印不成功,所以换成字符串,cout出来

string str = "车的品牌是:"+brand+",型号是:"+type+",颜色是:"+color+"上市年限是:" + std::to_string(year);
std::to_string()这个函数将整型数转换为字符串

3.,使用malloc在堆申请结构体空间有问题,所以直接在此引入类的概念:struct结构体,在写结构体指针struct Car *AodiA6 的时候,打印不出结果;

 应当把结构体改成类:class,其中涉及权限问题,应当加上public:

4.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值