• 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,它的内容如下:

     1 #ifndef PERSON_H
     2 #define PERSON_H
     3 class Person
     4 {
     5 public:
     6     int age;
     7     char* name;
     8     char* sex;
     9 public:
    10     Person();    //构造函数
    11     void say();
    12 };
    13 #endif

    第三步,要给出Person类的具体实现,因此,新建源文件Person.cpp,它的内容如下:

     1 #include <iostream>
     2 #include "Person.h"
     3 
     4 using namespace std;
     5 
     6 Person::Person()
     7 {
     8     cout << "创建了一个新的对象!" << endl;
     9 }
    10 
    11 void Person::say()
    12 {
    13     cout << "大家好,我叫" << name << ",性别" << sex << ",今年" << age << "岁." << endl;
    14 }

    注意:此处需要将头文件Person.h包含进来。

    最后我们新建一个test.cpp来测试我们写的Person类:

     1 #include <iostream>
     2 #include "Person.h"
     3 
     4 using namespace std;
     5 
     6 int main()
     7 {
     8     Person xc;
     9     
    10     xc.age = 18;
    11     xc.name = "流浪";
    12     xc.sex = "";
    13 
    14     xc.say();
    15     return 0;
    16 }

    注意到开头时有#include "Person.h"的声明,证明我们使用到了我们刚写的Person类。

    运行后的输出结果为:

    这是最简单的用法,有错误之处请大家指正!

    参考博客:https://www.cnblogs.com/fenghuan/p/4794514.html

  • 相关阅读:
    [Perl]Windows 系统 Unicode 文件名操作(新建、重命名、枚举、复制)全攻略
    [Perl]Can't link/include C library 'ft2build.h', 'freetype', aborting.
    ompparticles.cpp:(.text+0x322): undefined reference to `omp_set_num_threads'
    undefined reference to `omp_get_max_threads'
    使用MinGW 编译 iconv 库
    phpBB论坛 代码 语法高亮 模块 Codebox Plus
    最新版Mac系统(10.14.4) && Xcode(10.2.1) 无法使用dwarfdump 解析闪退的问题
    Xcode 8 打包教程
    Xcode 8.0无法注释的问题
    我的github地址,里边有一些拍照功能,选择照片功能的实现,还有一些其它的开源项目
  • 原文地址:https://www.cnblogs.com/remote/p/10371959.html
Copyright © 2020-2023  润新知