当前位置: 首页 > news >正文

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.

相关文章:

  • Rust学习~tokio简介
  • 服务端渲染(SSR):概念、优势与实现
  • 失眠治愈手册(二):问题优化
  • 计算机网络之路由协议(RIP路由协议)
  • 【软考网工】华为交换机命令
  • 安全见闻
  • 2025-skywalking组件
  • 软件工程SE
  • Qt/C++项目积累:3.日志管理系统 - 3.1 项目介绍
  • netty十八罗汉之——挖耳罗汉(Decoder)
  • PostgreSQL vs MongoDB:优劣分析及适用场景
  • 【C语言】(二)变量与常量
  • 滤波器的设计案例
  • Pytorch使用手册-音频重采样(专题十九)
  • BGP分解实验·19——BGP选路原则之起源
  • 深度学习-126-LangGraph之基础知识(三)添加记忆和Human_in_the_loop的聊天机器人
  • 解决每次 Maven Rebuild 后 Java 编译器版本变为 1.5
  • 微信小程序 - 自定义实现分页功能
  • 特辣的海藻!2
  • 达梦数据库学习笔记@1
  • 民生访谈|规范放生活动、提升供水品质……上海将有这些举措
  • 北京朝阳涉住宅组团地块126亿元成交
  • 特朗普声称中方领导人打了电话,外交部:近期中美元首没有通话
  • 当AI开始深度思考,人类如何守住自己的慢思考能力?
  • 早睡1小时,变化有多惊人?第一个就没想到
  • 美军空袭也门拘留中心,已致68人死亡