嵌入式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<stdio.h>

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

在这里插入图片描述
将主函数改成以下代码

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

}

在这里插入图片描述

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

在这里插入图片描述

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

#include<iostream>

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

在这里插入图片描述
cout<<“hello world\n”<<endl 类似c语言中printf(“hello world\n”),endl表示换行
c++中的输入cin

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

在这里插入图片描述

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值