嵌入式c++学习——c到c++的扩展(一)

一,命名空间
一个中大型软件往往又饿很多程序员共同完成,会使用大量的变量和函数,会产生变量或函数的冲突,为了解决合作开发时或者不同代码段之间的命名冲突,c++引入了命名空间(namespace)的概念

  1. 命名空间将全部作用域分成不同的部分
  2. 不同的命名空间可以相互嵌套
  3. 全局作用域也被称为默认命名空间
  4. 不同命名空间的标识符可以同名但不会冲突

二,命名空间的使用
1.命名空间的定义
namespace 是c++中的关键字,用来定义一个命名空间,语法格式为

namespace name
{
      //变量,函数 类等
}

name 是命名空间的名字,它里面可以包含变量,函数,类,typedef,#define等,由{}包围

namespace Li      //小李的命名空间
{
   FILE fp = NULL ;
}

namespace Wang     //小王的命名空间
{
      FILE fp = NULL ;
}

2,变量空间的使用
(1) 使用变量,函数时要指明他们所在的命名空间,如上所示

Li::fp = fopen(“add.txt”,“w”);    //  使用小李定义的变量
Wang::fp = fopen(“sui.txt”,“w”);    //  使用小王定义的变量

::是域解析操作符,在c++中用来指明要使用的命名空间
(2)除了::,还可以使用using声明
如上例

using Li ::fp
fp =  fopen(“add.txt”,“w”)        //  使用小李定义的变量
Wang::fp = fopen(“sui.txt”,“w”)       //  使用小王定义的变量

其中using的作用是声明了Li::fp。后面如果出现没有声明的fp,即使小李的fp,小王的则需要声明
(3)using不仅可以声明一个命名空间的变量,还可以声明整个命名空间,如

using namespace Li ;
fp = fopen(“add.txt”,“w”)       //  使用小李定义的变量
Wang::fp = fopen(“sui.txt”,“w”)       //  使用小王定义的变量

如果Li的命名空间中还有其他变量,那么同样在没有声明其他变量的命名空间时,默认为小李命名空间中变量
三命名空间使用例子


#include

namespace NamespaceA
{
	int a ;
	int add(int a ,int b)
	{
		return a+b;
	}
}
namespace NamespaceB
{
	namespace NamespaceC 
	{
		struct teacher
		{
			int add ;
			char name[20];
		};
	}
	int a ;
}
int add(int a,int b)
{
	return a+b+10 ;
}
int main ()
{
	
    	int ret = NamespaceA::add(2,4);
        printf ("ret=%d\n",ret);
	
}

嵌入式c++学习——c到c++的扩展(一)_第1张图片
将主函数改成以下代码

int main ()
{
            using namespace NamespaceA ;
            int ret = NamespaceA :: add(2,3) ;
            printf ("ret = %d",ret) ;
             ret = ::add(2,3) ;       //使用默认空间命名add
             printf ("ret = %d",ret) ;

}

嵌入式c++学习——c到c++的扩展(一)_第2张图片

using namespace NamespaceA ;
a = 10 ;
printf (“a = %d\n”,NamespaceA::a);

嵌入式c++学习——c到c++的扩展(一)_第3张图片

(四)c++的标准语言库和std的命名空间
c++是在c语言的基础上开发的。因此很多都是通用的,但是c++也开发了一些新的库,增加的新的头文件
如iostream.h:用于控制输出输入的头文件
fstream.h:用于文件操作的头文件
complex.h :用于复数计算的头文件
当然c语言中的头文件还是可以使用如string.h ,stdlib.h,但是在c++中可以将后面的.h去掉,在前面加个c就可以使用了,简单方便
(五)c++的输入和输出

#include

    using namespace std ;
    int main ()
    {
           cout<<"hello world\n"<

嵌入式c++学习——c到c++的扩展(一)_第4张图片
cout<<“hello world\n”< c++中的输入cin

#include
using namespace std ;
int main ()
{
     int x ;
     int y ;
     cout << "请输入x和y"<> x>> y ;
     cout << “x等于”<

嵌入式c++学习——c到c++的扩展(一)_第5张图片

你可能感兴趣的:(学习)