C++中的头文件(.h)和源文件(.cpp)都应该写什么?
头文件(.h):写定义和声明
写类的声明(包括类里面的成员和方法的声明)、函数原型、#define常数等,但是一般来说不写具体的实现。
注意:
1、在写头文件的时候需要注意,在开头和结尾处必须按照如下样式加上预编译语句(如下):
#ifndef PERSON_H
#define PERSON_H
//中间写你的代码
#endif
这样做是为了防止重复编译,不这样做就有可能会出错。
至于PERSON_H这个名字可以随便取,只要符合规范就行,但是建议把它写成与源文件的名字对应。
源文件(.cpp):写实现
源文件主要写实现头文件中已经声明的那些函数的具体代码。需要注意的是,开头必须#include一下实现的头文件,以及你需要用到的头文件。那么当你需要用到自己写的头文件中类时,只需要#include进来就行了。
注意:
1、在.h文件中定义了类的属性,在.cpp文件中就不要重复定义,否则链接的时候会报错
2、很多人都是先学的C,所以在包含头文件的时候喜欢用<>,例如#include <iostream>,但是在包含自己写的头文件的时候一定要用"",否则可能会报错:No such file or directory
下面举一个简单的例子:
第一步,建立一个空工程(以在Visual C++ 6.0)环境下为例
点击菜单栏的file - > 选择new(新建) -> 选择project(工程)目录下的Win32 Console Application选项 -> 在右侧输入工程名和存储的位置,下一步 -> 选择“一个 空工 程”,点击完成
第二步,新建头文件Person.h,它的内容如下:
#ifndef PERSON_H
#define PERSON_H
class Person
{
public:
int age;
char* name;
char* sex;
public:
Person(); //构造函数
void say();
};
#endif
第三步,要给出Person类的具体实现,因此,新建源文件Person.cpp,它的内容如下:
#include <iostream>
#include "Person.h" using namespace std; Person::Person()
{
cout << "创建了一个新的对象!" << endl;
} void Person::say()
{
cout << "大家好,我叫" << name << ",性别" << sex << ",今年" << age << "岁." << endl;
}
注意:此处需要将头文件Person.h包含进来。
最后我们新建一个test.cpp来测试我们写的Person类:
#include <iostream>
#include "Person.h" using namespace std; int main()
{
Person xc; xc.age = ;
xc.name = "流浪";
xc.sex = "男"; xc.say();
return ;
}
注意到开头时有#include "Person.h"的声明,证明我们使用到了我们刚写的Person类。
运行后的输出结果为:
这是最简单的用法,有错误之处请大家指正!
参考博客:https://www.cnblogs.com/fenghuan/p/4794514.html
C++中的头文件(.h)和源文件(.cpp)都应该写什么?的更多相关文章
- 浅谈头文件(.h)和源文件(.cpp)的区别
浅谈头文件(.h)和源文件(.cpp)的区别 本人原来在大一写C的时候,都是所有代码写在一个文件里一锅乱煮.经过自己开始写程序之后,发现一个工程只有一定是由多个不同功能.分门别类展开的文件构成的.一锅 ...
- 理解C++中的头文件和源文件的作用【转】
一.C++编译模式通常,在一个C++程序中,只包含两类文件--.cpp文件和.h文件.其中,.cpp文件被称作C++源文件,里面放的都是C++的源代码:而.h文件则被称作C++头文件,里面放的也是C+ ...
- 在查找预编译头时遇到意外的文件结尾。是否忘记了向源中添加“#include "StdAfx.h"”?
在查找预编译头时遇到意外的文件结尾.是否忘记了向源中添加“#include "StdAfx.h"”? 右键选择该文件.cpp格式的->属性->预编译头,→ 不使用预编译 ...
- C++基础之头文件和源文件的关系
今天找了个解析xml的开源C++项目tinyxml,按照网上的说法去编译,但是一直编译不通过,"无法打开头文件tinyxml.h",但是明明我在工程底下有了这个文件,对于我这种初学 ...
- C语言中,头文件和源文件的关系(转)
简单的说其实要理解C文件与头文件(即.h)有什么不同之处,首先需要弄明白编译器的工作过程,一般说来编译器会做以下几个过程: 1.预处理阶段 2.词法与语法分析阶段 3.编译阶段,首先编译成纯汇编语句, ...
- C头文件和源文件的连
(http://blog.163.com/yui_program/blog/static/18415541520115177852896/) 一.源文件如何根据#include来关联头文件 1,系统自 ...
- C++中头文件(.h)和源文件(.cpp)都应该写些什么
头文件(.h): 写类的声明(包括类里面的成员和方法的声明).函数原型.#define常数等,但一般来说不写出具体的实现. 在写头文件时需要注意,在开头和结尾处必须按照如下样式加上预编译语句(如下): ...
- C++ 中头文件(.h)和源文件(.cc)的写法简述
用C++编写比较大型的项目时,文件的分割管理确实确实是非常必要的 .下面就非常简洁明了地谈谈头文件(.h)和源文件(.cc)应该怎么写. 头文件(.h):写类的声明(包括类里面的成员和方法的声明).函 ...
- fatal error C1010: 在查找预编译头时遇到意外的文件结尾。是否忘记了向源中添加“#include "StdAfx.h"”? 解决方法
错误描述: fatal error C1010: 在查找预编译头时遇到意外的文件结尾.是否忘记了向源中添加“#include "StdAfx.h"”? 错误分析: 此错误发 ...
随机推荐
- sql 创建用户脚本
USE master go CREATE LOGIN jiazhuang --用户名 WITH PASSWORD = 'sa', --密码 DEFAULT_DATABASE = JiaZhuan, ...
- NodeJs异步上传multer插件报Multipart: Boundary not found错误解决方法
NodeJs-express架构下实现文件上传两大利器: 1.前端异步插件h5uploader https://github.com/wewoor/h5uploader 2.后端处理multer ht ...
- node.js分片上传文件
前端 : <html> <head> <title>分片上传文件</title> </head> <body> <div ...
- Protocol Buffers教程
今天想比较下pb和fastjson两个序列化后的大小.再看了一下pb序列化 pb官网:https://developers.google.com/protocol-buffers/ pb是啥 What ...
- $smarty->assign('','')查询结果发送给模板
$article = one("select * from article WHERE id = '$id'"); $smarty->assign('abc(随便定义)',' ...
- 【代码笔记】Java学习一阶段总结
写笔记需要打开eclipse写 哈哈哈哈,不然写什么都屡不清了 ……还需要打开API说明文档. JFrame 窗体组件. JFrame里面常用的函数: setSize 设置窗体大小 setDefaul ...
- 14_synchronized深入
[脏读] 对于对象同步和异步的方法,我们在设计程序的时候,一定要考虑问题的整体,不然会出现不一致的错误,最经典的错误的就是脏读(dirty read). [实例代码] package com.higg ...
- ASP.NET MVC Tips
1. _ViewStart.cshtml会在调用每个页面的时候执行,我们可以在页面内设置Layout页面,也可以在这个页面写一些逻辑来根据不同的情况引用不同的Layout页面,详情请参考此处:
- Oracle 查看表占用的空间大小
select TABLE_NAME , num_rows * avg_row_len /1024/1024 AS KJfrom ALL_tables WHERE TABLE_NAME IN (sele ...
- wxpython Menus and toolbars
Menus and toolbars A common part in a GUI application is a menubar. A menubar consists of objects ca ...