文章目录

  • 一、头文件
  • 二、源文件
  • 三、不同文件之间的调用
  • 四、问题记录

一、头文件

头文件中写类的声明、结构的声明、函数原型、宏定义等
注意不可以定义全局变量,否则可能会引起重复定义的错误

  • testStruct.h

        #pragma once#define MAXPRICE 200000//结构体定义,这个地方一定要加typedef(否则vs2019会报重复定义的错)typedef struct Book {char Name[50];int ID;double price;}book;//车辆类定义class Vehicle {public:char Brand[50];double price;int siteNum;Vehicle(void) {price = 0;siteNum = 0;strcpy_s(Brand, "car");}Vehicle(char* id, double newprice, int sitenum) {strcpy_s(Brand, id);//char*转char[]拷贝  char[]转char*直接赋值price = newprice;siteNum = sitenum;}public:void printVehicleInfo();};//结构体作为参数void printDetail(Book book);//结构体指针作为参数void printDetail(Book* book);//对象指针作为参数void printCarInfo(Vehicle* vehicle);//对象引用作为参数void printCarInfo(Vehicle& vehicle);//复制信息,对象引用作为参数,返回引用Vehicle* copyCarInfo(Vehicle& vehicle);
    

二、源文件

源文件中主要是对.h文件中声明的定义、实现,注意引入“testStruct.h”

  • testStruct.cpp

        #include <iostream>#include <string>#include "testStruct.h"using namespace std;//输出详细信息void printDetail(Book book) {cout << "书名:" << book.Name << endl;cout << "ID:" << book.ID << endl;cout << "价格:" << book.price << endl;}void printDetail(Book* book) {cout << endl;cout << "指针作为参数:" << endl;cout << "书名:" << book->Name << endl;cout << "ID:" << book->ID << endl;cout << "价格:" << book->price << endl;}void Vehicle::printVehicleInfo() {//this是个指针cout << "品牌:" << this->Brand << endl;cout << "价格:" << this->price << endl;cout << "承载人数:" << this->siteNum << endl;}void printCarInfo(Vehicle* vehicle) {cout << "品牌:" << vehicle->Brand << endl;cout << "价格:" << vehicle->price << endl;cout << "承载人数:" << vehicle->siteNum << endl;}void printCarInfo(Vehicle& vehicle) {cout << "品牌:" << vehicle.Brand << endl;cout << "价格:" << vehicle.price << endl;cout << "承载人数:" << vehicle.siteNum << endl;}Vehicle* copyCarInfo(Vehicle& vehicle) {Vehicle* pnewvehicle = &vehicle;strcpy_s(vehicle.Brand, "MINI-point");vehicle.price = 200000;return pnewvehicle;}
    

三、不同文件之间的调用

在其他文件(例如含有main()入口的testNew.cpp)中使用testStruct定义的函数,只需要引入testStruct.h即可

  • testNew.cpp

        #include <iostream>#include <string>#include "testStruct.h"using namespace std;int main(){Vehicle myminicar;Vehicle* minicarinfo = copyCarInfo(myminicar);printCarInfo(minicarinfo);cout << "------------分割线------------" << endl;cout << "设置的宏定义MAXPRICE:" <<MAXPRICE << endl;}
    
  • 执行结果

四、问题记录

在cpp文件中结构体可以不使用typedef,可以直接定义,但是在头文件中不加typedef会出现报错

C++头文件、源代码文件简单总结相关推荐

  1. php下载apk文件源码下载,PHP_php下载文件源代码(强制任意文件格式下载),一个简单的php文件下载源代码 - phpStudy...

    php下载文件源代码(强制任意文件格式下载) 一个简单的php文件下载源代码,虽不支持断点续传等,但是可以满足一些常用的需求了.php下载文件其实用一个a标签就能实现,比如 magento-1.8.1 ...

  2. C++ 笔记(25)— 理解 C++ 中的头文件和源文件的作用

    1. C++ 编译模式 通常,在一个 C++ 程序中,只包含两类文件: .cpp 文件,被称作 C++ 源文件,里面放的都是 C++ 的源代码 .h 文件,被称作 C++ 头文件,里面放的也是 C++ ...

  3. cmake 头文件 库文件 路径搜索 CMAKE_INCLUDE_PATH CMAKE_LIBRARY_PATH

    目录 cmake中定义搜索路径 修改环境变量增加搜索路径 FIND 系列指令,通过FIND寻找路径并进行添加 大型开源库路径添加方式 find_package采用两种模式搜索库 路径搜索,这里介绍头文 ...

  4. linux 多源代码文件编译

    linux 多源代码文件编译 2013-04-10 14:36:28 分类: LINUX 前面一节介绍了Linux下头文件的一些基础知识,有内核头文件和用户空间头文件,但之后的讲解,都是基于用户空间的 ...

  5. C++头文件和源文件,编译过程

    源文件如何根据#include来关联头文件  1.系统自带的头文件用尖括号括起来,这样编译器会在系统文件目录下查找. #include <xxx.h> 2.用户自定义的文件用双引号括起来, ...

  6. C Primer Plus 第9章 函数 9.4 多源代码文件程序的编译

    2019独角兽企业重金招聘Python工程师标准>>> 9.4.1  UNIX 首先假定UNIX系统下安装了标准的UNIX C 编译器cc.文件file1.c和file2.c中包含有 ...

  7. C++头文件和源文件的编译过程

    源文件如何根据#include来关联头文件 1.系统自带的头文件用尖括号括起来,这样编译器会在系统文件目录下查找. #include <xxx.h> 2.用户自定义的文件用双引号括起来,编 ...

  8. [转]C++中的头文件和源文件 .h .cpp

    头文件放声明,源文件放具体定义. 原文: http://www.cnblogs.com/lidabo/archive/2012/04/17/2454568.html 一.C++编译模式 通常,在一个C ...

  9. 什么是c 语言中源文件,C++中头文件和源文件详细介绍

    C++中的头文件和源文件详解 一.C++编译模式 通常,在一个C++程序中,只包含两类文件--.cpp文件和.h文件.其中,.cpp文件被称作C++源文件,里面放的都是C++的源代码:而.h文件则被称 ...

  10. C++中的头文件和源文件:如何写头文件

    C++中的头文件和源文件 转自:博客园http://www.cnblogs.com/lidabo/archive/2012/04/17/2454568.html 一.C++编译模式 通常,在一个C++ ...

最新文章

  1. python下载mp4
  2. 各种类型Android源代码
  3. js 弹出层的点击事件影响到底层的点击事件_聊一聊 Node.js 错误处理
  4. List和Set以及Map的选用
  5. PRML-系列一之1.2.4
  6. 爬取网易某只股票2017-01到2018-01的数据
  7. python pca降维_协方差矩阵的计算、PCA
  8. Hpool哈池靠谱吗?-Hpool矿池的罪与罚-除了hpool还有什么矿池?
  9. Python描述 LeetCode 781. 森林中的兔子
  10. android 农历源码,android实现显示阳历和农历源码
  11. Excel快捷键大全和35个函数---第二弹
  12. react从入门到入魔
  13. Android神兵利器之黄油刀的使用(ButterKnife)
  14. Vue2竖向文字滚动
  15. Graylog和ELK的简单对比
  16. Excel 和 python 使用梯度下降法分别求【极小值点】【线性回归问题】
  17. Android 之Google认证GMS详细解剖
  18. iOS保存视频、图片到相册
  19. Leetcode—— 104. 二叉树的最大深度
  20. 一个程序猿三个月没有找到工作转去开滴滴

热门文章

  1. 三维建模----相机参数
  2. 企业数字化进程面临挑战 知识管理模式亟待转型
  3. 《软件测试技术大全》(第二版)目录
  4. 轩窗斜影,旖旎了谁的笑颜
  5. python读取sav文件_savReaderWriter 模块的使用
  6. python中的类数据成员和对象数据成员
  7. 基于51单片机的人体红外探测防盗报警(仿真+源码+全套资料)
  8. 研发团队如何低成本实现敏捷开发管理
  9. 在博客中自定义Google代理搜索
  10. 氨基酸英文缩写及在Material Studio中的模型图