【C++】源文件.cpp和头文件.h分离编程

这篇具有很好参考价值的文章主要介绍了【C++】源文件.cpp和头文件.h分离编程。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

优势介绍

将C++代码分为头文件(.h)和源文件(.cpp)的做法有以下几个好处:

模块化和代码组织:将函数和类的声明(包括函数原型、类的成员和属性等)放在头文件中,将函数和类的实现(具体的函数逻辑、成员函数的定义等)放在源文件中。这种分离有助于对代码进行模块化和组织,使代码更加清晰和可维护。头文件可以作为接口文档,给其他开发人员提供使用代码的相关信息。

可重用性:将代码逻辑和实现分离可以增加代码的可重用性。头文件中的声明可以被多个源文件引用,这样不同的源文件可以共享相同的函数和类的定义,避免了重复编写相同的代码。这对于开发大型项目或者多人合作开发非常有用,可以提高开发效率。

编译效率:当头文件被多个源文件包含时,编译器只需编译一次头文件即可,然后在编译不同的源文件时,只需链接相应的目标文件即可。这样可以提高编译效率,减少编译时间。如果将所有代码都写在一个文件中,每次修改都需要重新编译整个文件,非常耗时。

隐藏实现细节:头文件中只包含函数和类的声明,并不包含实现的细节,这样可以隐藏具体的实现逻辑。只有源文件中包含了实现的代码,其他文件无法直接访问和修改具体的实现,从而保护了代码的安全性和稳定性。

总结起来,将C++代码分为头文件和源文件可以提高代码的可维护性、可重用性和编译效率,同时也可以隐藏实现细节,保护代码的安全性。这是一种良好的编程实践,尤其适用于大型项目或者多人协作开发的情况下。

举个栗子

假设在分离cpp和h文件之前,我们把所有写在cpp中,得到一下文件:

#include<iostream>
using namespace std;

class Pencil{
public:
	void setSize(int size)
	{
		p_size=size;
	}
	void inform()
	{
		cout<<"这是一个铅笔"<<endl;
	}
	int get_size()
	{
		return p_size;
	}
private:
	int p_size;
};
class Book{
public:
	void setSize(int size)
	{
		b_size=size;
	}
	void inform()
	{
		cout<<"这是一本书"<<endl;
	}
	int get_size()
	{
		return b_size;
	}
private:
	int b_size;
};
class SchoolBag{
public:
	void set_info(int p_size,int b_size)
	{
		p.setSize(p_size);
		b.setSize(b_size);
	}
	void show_info()
	{
		p.inform();cout<<"size="<<p.get_size()<<endl;
		b.inform();cout<<"size="<<b.get_size()<<endl;
	}
private:
	Pencil p;
	Book b;
};
int main()
{
	SchoolBag s;
	s.set_info(10,100);
	s.show_info();
	return 0;
}

分离之后,会得到:

pencil.h pencil.cpp book.h book.cpp school.h school.cpp main.cpp

分别写在下面

pencil.h:

#pragma once
#include<iostream>
using namespace std;
class Pencil {
public:
	void setSize(int size);
	void inform();
	int get_size();
private:
	int p_size;
};

book.h

#pragma once
#include<iostream>
using namespace std;
class Book {
public:
	void setSize(int size);
	void inform();
	int get_size();
private:
	int b_size;
};

schoolbag.h

#pragma once
#include "pencil.h"
#include "book.h"
class SchoolBag {
public:
	void set_info(int p_size, int b_size);
	void show_info();
private:
	Pencil p;
	Book b;
};

pencil.cpp

#include "pencil.h"
void Pencil::setSize(int size)
{
	p_size = size;
}
void Pencil::inform()
{
	cout << "这是一个铅笔" << endl;
}
int Pencil::get_size()
{
	return p_size;
}

book.cpp

#include "book.h"
void Book::setSize(int size)
{
	b_size = size;
}
void Book::inform()
{
	cout << "这是一本书" << endl;
}
int Book::get_size()
{
	return b_size;
}

schoolbag.cpp

#include "schoolbag.h"
void SchoolBag::set_info(int p_size, int b_size)
{
	p.setSize(p_size);
	b.setSize(b_size);
}
void SchoolBag::show_info()
{
	p.inform();cout << "size=" << p.get_size() << endl;
	b.inform();cout << "size=" << b.get_size() << endl;
}

main.cpp

#include "schoolbag.h"

int main()
{
	SchoolBag s;
	s.set_info(10, 100);
	s.show_info();
	return 0;
}

运行方法

注意运行的时候一定要把上面的七个文件进行“编译链接”比如放在visual studio里面之后,运行main可以自动实现上述功能。如果运行在dev cpp里面不编译链接,是无法运行的:

【C++】源文件.cpp和头文件.h分离编程,C++,c++,开发语言文章来源地址https://www.toymoban.com/news/detail-707377.html

到了这里,关于【C++】源文件.cpp和头文件.h分离编程的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Figma怎么导出源文件?

    Figma 是一款备受网页和 UI 设计师喜爱的基于矢量的设计工具。那么,如何在 Figma 中导出源文件呢?本篇文章将为大家演示如何以更加简单的方式,从 Figma 快速、免费导出源文件。 即时设计 是一款拥有强大导入导出功能的设计工具,全面覆盖了 Figma 设计能力的且为全中文的

    2024年02月11日
    浏览(55)
  • vscode 无法打开源文件

    以下是c/c++插件的intelligense设置情况: 解决办法: 重新安装vsode无用;重新下载mingw64,管用了!(我猜可能是之前换电脑移植文件的时候导致了部分文件丢失)

    2024年02月07日
    浏览(49)
  • VScode中添加头文件和源文件的方法

            在正常情况下,若同一文件夹下若头文件、源文件、和主要代码在同一文件夹下,则可以正常运行程序。 如图(此为Visual Studio 示例):   编译结果(无报错):     但在VScode中,同样的使用方式会产生报错。 如下:    main.c:  myheadfile.h: myheadfile.c:    报错如

    2023年04月09日
    浏览(46)
  • CMake获取目录下所有源文件

    1、aux_source_directory指令         aux_source_directory( dir variable ) 比如:         aux_source_directory(${CMAKE_CURRENT_SOURCE_DIR} ALL_SOURCE) , 这样将当前目录所有的源文件(.cpp 和.c文件)都放到了ALL_SOURCE变量中,但是头文件并没有被包括进去,若在头文件有函数的实现部分,采用这

    2024年02月15日
    浏览(48)
  • Linux--多个源文件编译成同一个可执行文件

    写法一:不推荐 写法二、推荐 $@: 代表目标文件    $^: 代表生成目标文件的所有源文件

    2024年02月15日
    浏览(64)
  • Vivado中如何修改IP源文件

    前一篇文章是通过改变JESD204B IP的设置,在Shared Logic里勾选in example design,来避免共用输入时钟的问题。那么还有没有别的办法呢?有没有更直接点的实现方式呢? 答案是肯定的:可以 直接修改IP,将IBUFDS从IP里移出去 ,放到外面就可以共用了。修改IP是一个比较复杂的办法,

    2024年02月11日
    浏览(86)
  • Lua之Lua源文件批量转换为luac字节码文件

    准备的工具:luac.exe  CSDN https://mp.csdn.net/mp_download/manage/download/UpDetailed Unity版:

    2024年02月11日
    浏览(39)
  • 教你怎么在电脑端下载西瓜视频源文件

    家里长辈平时爱用西瓜视频,看到喜欢的广场舞就会收藏,甚至想下载到视频机,晚上去广场跟着跳🤣。 这时计算机专业出身的我,就派上用场了。不废话,直接上手: 打开西瓜视频官网,搜索到想要的视频 打开 F12(开发者工具) 切换到移动端模式,刷新页面 在 Network

    2024年02月05日
    浏览(276)
  • Unity Netcode for GameObjects多人联机(源文件)

    一、安装Netcode for Gameobjects Netcode for Gameobjects是Unity新推出的联机解决方案,该解决方案目前处于初期,相关功能不是很完善,但是用起来还不错。下面介绍一下相关用法。 首先下载安装Netcode for Gameobjects,其官方网站为Netcode for Gameobjects,安装方式也很简单,新建好Unity项目

    2024年02月03日
    浏览(64)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包