0
点赞
收藏
分享

微信扫一扫

常用设计模式(三)

洲行 2023-06-13 阅读 96

5a2585dded9b416fb4ea58637b42ed39.png

  Yan-英杰的主页

悟已往之不谏 知来者之可追  

C++程序员,2024届电子信息研究生


目录

1.命名空间

        a.命名空间定义

               (1)、 域作用限定符

             (2)、域访问顺序

2.C++的输入&&输出


1.命名空间

       1.C语言存在命名冲突的问题,库之间的冲突

       2.我们互相之间的冲突

        

        a.命名空间定义

                

//域
namespace YanYingjie
{
    int rand = 0;
}

               (1)、 域作用限定符

                ::域作用限定符,修改了其访问顺序,使得其不访问局部域,直接访问全局域

int a = 0;
int main()
{
	int a = 1;
	printf("%d\n",a);

	printf("%d",::a);
	return 0;
}

               (2)、域访问顺序

                        访问顺序:局部域->全局域->命名空间域

                        访问命名空间域的前提:

                                ①、展开命名空间域

                                        展开命名空间域之后,命名空间域相当于暴露在全局,此时,命名空间域

变成了全局变量,如果同时访问命名空间域和全局变量则直接报错,展开意味着,是否去命名空间

内部进行搜索

using namespace yqy;

                                ②、指定访问命名空间域

int a = 0;

namespace yqy
{
	int a = 2;
}
int main()
{
	//int a = 1;
	printf("%d\n",a);

	printf("%d",yqy::a);
	return 0;
}

        namespace之间可以互相嵌套

        

namespace N1
{
	int a = 0;
	int b;
	int c;
	int Add(int left,int right)
	{
		return left + right;
	}
	namespace N2
	{
		int a = 1;
		int b;
		int c;
		int Add(int left, int right)
		{
			return left + right;
		}
	}
}

int main()
{
	int left = 1;
	int right = 2;
	printf("%d",N1::Add(left,right));
	return 0;
}

         

        问题:

                为什么头文件没有.h

//头文件,又称io流
#include<iostream>
//为什么不加.h
//早些年时候,确实存在.h,很老的编译器确实可以使用vc6.0 没有命名空间
//强制<iostream.h>使用则会报错

                std是C++标准库,using namespace std;意味着,编译过程中,可以直接去std库中进行

访问,但是直接展开并不好,如果我们的定义,如果与库中的内容冲突,则会报错,最好用谁,

展开谁,项目里面尽量不要展开

                解决方法:我们可以把常用的函数展开,using std::cout;   using  std::endl;

using namespace std;

int main()
{

	std::cout << "hello world" << std::endl;
	cout << "hello world" << endl;
	return 0;
}

2.C++的输入&&输出

说明:

         1. 使用cout标准输出对象(控制台)cin标准输入对象(键盘)时,必须包含< iostream >头文件

以及按命名空间使用方法使用std。

        2. cout和cin是全局的流对象,endl是特殊的C++符号,表示换行输出,他们都包含在包含<

iostream >头文件中。

        3. <<是流插入运算符,>>是流提取运算符

        4. 使用C++输入输出更方便,不需要像printf/scanf输入输出时那样,需要手动控制格式。

C++的输入输出可以自动识别变量类型。

        5. 实际上cout和cin分别是ostream和istream类型的对象,>>和<<也涉及运算符重载等知识,

这些知识我们我们后续才会学习,所以我们这里只是简单学习他们的使用。后面我们还有有

一个章节更深入的学习IO流用法及原理

        C++和C语言可以混着用,哪个方法方便使用哪个

#include<iostream>
// std是C++标准库的命名空间名,C++将标准库的定义实现都放到这个命名空间中
using namespace std;
int main()
{
cout<<"Hello world!!!"<<endl;
return 0;
}
#include <iostream>
using namespace std;
int main()
{
   int a;
   double b;
   char c;
     
   // 可以自动识别变量的类型
   cin>>a;
   cin>>b>>c;
     
   cout<<a<<endl;
   cout<<b<<" "<<c<<endl;
   return 0;
}

        注意:早期标准库将所有功能在全局域中实现,声明在.h 后缀的头文件中,使用时只需包含对应 头文件即可,后来将其实现在 std 命名空间下,为了和 C 头文件区分,也为了正确使用命名空间,

规定 C++ 头文件不带 .h ;旧编译器 (vc 6.0) 中还支持 <iostream.h> 格式,后续编译器已不支持,因

推荐 使用 <iostream>+std 的方式。

#include <iostream>
using namespace std;
int main()
{
   int a;
   double b;
   char c;
     
   // 可以自动识别变量的类型
   cin>>a;
   cin>>b>>c;
     
   cout<<a<<endl;
   cout<<b<<" "<<c<<endl;
   return 0;
}

std 命名空间的使用惯例:

        std是C++标准库的命名空间,如何展开std使用更合理呢?

举报

相关推荐

0 条评论