100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > C++命名空间中类声明 成员函数声明和函数模板

C++命名空间中类声明 成员函数声明和函数模板

时间:2018-08-27 09:30:52

相关推荐

C++命名空间中类声明 成员函数声明和函数模板

文章目录

定义类声明函数模板参考文章

定义

命名空间是一个范畴,它包含类声明,函数声明,常量声明和模板声明等名字空间成员。本文拟讨论如何在名字空间中声明自己的类和函数,以及如何在程序中使用它们。例如:

namespace proj_alpha{//下面是命名空间 proj_alpha 的成员class Spy {/*..*/};void encrypt (char *msg);const int MAX_SPIES = 8;}

类声明

在使用C++类的时候,常常会用到命名空间,在使用的时候一般需要前置声明。例如:

//SpaceA header file#pragma oncenamespace TestA {class SpaceA {public:SpaceA();~SpaceA();void print();};}//SpaceA cpp file#include "SpaceA.h"using namespace TestA; //必须有前置声明SpaceA::SpaceA() {}SpaceA::~SpaceA() {}void SpaceA::print() {int i = 0;i++;}

如果命名空间定义的类成员中包含其他命名空间的类,使用的时候,必须加上命名空间。例如:

//SpaceB header file#pragma once//在使用之前声明一下namespace TestA {class SpaceA;}namespace TestB {class SpaceB {public:SpaceB();~SpaceB();void printB();private:TestA::SpaceA* a;//使用的时候,必须加上命名空间};} //SpaceB cpp file#include "SpaceB.h"#include "SpaceA.h"using namespace TestB;using namespace TestA;SpaceB::SpaceB() {a = new SpaceA;}SpaceB::~SpaceB() {}void SpaceB::printB() {int i = 9;i++;a->print();}

主函数中定义方式:

#include "SpaceB.h"using namespace TestB;int main(int argc, char *argv[]){SpaceB b;b.printB();}

函数模板

命名空间中定义函数模板,实例如下:

//compare header filenamespace compare{template<class T> T max(const T* data,int size){T result =data[0];for(int i=1;i<size;i++)if(result<data[i])result=data[i];return result;}template <class T> T min(const T* data,int size){T result =data[0];for(int i=1;i<size;i++)if(result>data[i])result=data[i];return result;}}

主函数调用方式:

#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;}

参考文章

本文参考了如下几篇文章:

C++在命名空间中声明类和成员函数

C++在命名空间中使用函数模板

带有命名空间的C++类的前置声明

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。