为什么C++中声明和定义要分开写
2015-11-11 09:42
393 查看
现在开始写项目了,你会发现我们一般都要写一个cpp,对应的还得有一个h文件,那么为什么在C++中我们要这么做?.h就是声明,.cpp就是实现,而所谓分离式实现就是指“声明”和“定义”分别保存在不同的文件中,声明保存在.h文件、定义保存在.cpp文件中。
那么将声明和定义分离有什么意义吗?首先从非分离式(声明的同时给出定义)看,其内容一般保存在.h文件中,以供多个源文件引用。但是将定义放在头文件,那么当多个源文件使用#include命令包含此类的头文件便会在链接阶段出现“multiple definition”链接错误!那么想让多个文件使用此头文件,又不引发链接的“multiple definition”错误该怎么办呢?
分离式的实现便可以解决这个问题。因为.h文件中只包含声明,即使被多个源文件引用也不会导致“multiple definition”链接错误。所以分离式实现增强了命名空间的实用性。
那么将声明和定义分离有什么意义吗?首先从非分离式(声明的同时给出定义)看,其内容一般保存在.h文件中,以供多个源文件引用。但是将定义放在头文件,那么当多个源文件使用#include命令包含此类的头文件便会在链接阶段出现“multiple definition”链接错误!那么想让多个文件使用此头文件,又不引发链接的“multiple definition”错误该怎么办呢?
分离式的实现便可以解决这个问题。因为.h文件中只包含声明,即使被多个源文件引用也不会导致“multiple definition”链接错误。所以分离式实现增强了命名空间的实用性。
相关文章推荐
- c++11单实例(singleton)初始化的几种方法(memory fence,atomic,call_once)
- C++17 最新进展
- 解决类似/usr/lib64/libstdc++.so.6: version 'GLIBCXX_3.4.19' not found错误
- C语言单向链表
- 黑马程序员——C语言基础04—程序控制
- C++面向对象操作符重载:调用操作符和函数对象
- c#和c++互操作(平台调用相关)
- C++实现调用C#(CLI)方法
- struct 区别 在C 和C++ 中
- C C++ 文件输入与输出
- C++primer--泛型算法初识
- Cocoa开发——PIPE通讯框架
- 反转二进制数输出十进制值
- c++中将文件内容清空
- C++内存管理
- C语言实现文件实时更新
- C++11新特性之 default and delete specifiers
- C++11新特性之 default and delete specifiers
- C语言编写的文本文件/二进制文件格式互换
- leetcode笔记:Best Time to Buy and Sell Stock