查信息的网站有哪些/上海百度推广
一、命名空间
1、首先在头文件中进行函数申明,这里需要注意的是C++中函数可以在多个地方进行申明,但是函数实现只能在一个地方。
2、include头文件,其实本质就是把头文件中的内容放到include的位置,呼应上面说的函数可以在多个地方进行申明,但是函数实现只能在一个地方。
3、命名空间的引入其实是因为我们在main函数中可能引用了多个cpp的文件,但是这些cpp的文件中出现了相同名字的函数,通过命名空间我们就可以指定调用某个空间下的某个函数,而不是笼统的把所有函数都引用进来。
compare.h:namespace compare{double max(const double* data,int size);double min(const double* data,int size);
}
compare.cpp:#include "compare.h"
double compare ::max(const double* data,int size){double result=data[0];for(int i=1;i<size;i++)if(result<data[i])result=data[i];return result;
}
double compare ::min(const double* data,int size){double result=data[0];for(int i=1;i<size;i++)if(result>data[i])result=data[i];return result;
}
test.cpp:#include <iostream>
#include "compare.h"
using compare::max;
using compare::min;
//能够用以下指令的取代上面的声明
// using namespace compare;
using std::cout;
using std::endl;int main(){double data[]={1.2,3.3,5.4,2.6,4.7,6.8};const int dataSize=sizeof data/sizeof data[0];cout <<"Min double is "<<min(data ,dataSize)<<endl;cout<<"Max double is "<<max(data,dataSize)<<endl;return 0;
}
二、编译过程分析
同样以上面的代码作为示例
1、在编译之前,预编译器会将compare.h文件中的内容拷贝到test.cpp中
2、接着编译test.cpp和compare.cpp两个源文件,生成目标文件test.o和compare.o,这2个文件是不能被单独执行的,原因很简单:
compare.o中不存在main函数,肯定不可以被执行
test.o中虽然有main函数,但是它在main函数中调用了一个max,min函数,而max,min函数的定义却存在于compare.o中,因此test.o依赖于compare.o
3、把test.o、compare.o链接在一起,生成可执行文件,注意这两个文件的连接过程一定要好好理解,其实就是相当于把test.o中函数的申明找到函数的实现,串联在一起形成最终的可执行
4、运行程序