【C++】C++入门

5a2585dded9b416fb4ea58637b42ed39.png

  Yan-英杰的主页

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

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


目录

1.命名空间

        a.命名空间定义

               (1)、 域作用限定符

             (2)、域访问顺序

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


1.命名空间

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

       2.我们互相之间的冲突

        【C++】C++入门_第1张图片【C++】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;
}

【C++】C++入门_第3张图片

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

          【C++】C++入门_第4张图片

        问题:

                为什么头文件没有.h

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

                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++的输入&&输出

        注:std::cout和std::endl,厉害的地方在于自动识别数据类型

说明:
         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
// std是C++标准库的命名空间名,C++将标准库的定义实现都放到这个命名空间中
using namespace std;
int main()
{
cout<<"Hello world!!!"<
using namespace std;
int main()
{
   int a;
   double b;
   char c;
     
   // 可以自动识别变量的类型
   cin>>a;
   cin>>b>>c;
     
   cout<

        注意:早期标准库将所有功能在全局域中实现,声明在.h 后缀的头文件中,使用时只需包含对应 头文件即可,后来将其实现在 std 命名空间下,为了和 C 头文件区分,也为了正确使用命名空间,
规定 C++ 头文件不带 .h ;旧编译器 (vc 6.0) 中还支持 格式,后续编译器已不支持,因
推荐 使用 +std 的方式。

#include 
using namespace std;
int main()
{
   int a;
   double b;
   char c;
     
   // 可以自动识别变量的类型
   cin>>a;
   cin>>b>>c;
     
   cout<
std 命名空间的使用惯例:
        std是C++标准库的命名空间,如何展开std使用更合理呢?
        1. 在日常练习中,建议直接using namespace std即可,这样就很方便。
        2. using namespace std展开,标准库就全部暴露出来了,如果我们定义跟库重名的类型/对 象/函数,就存在冲突问题。该问题在日常练习中很少出现,但是项目开发中代码较多、规模 大,就很容易出现。所以建议在项目开发中使用,像std::cout这样使用时指定命名空间 +
using std::cout展开常用的库对象/类型等方式。

你可能感兴趣的:(C++,c++,后端,汇编,开发语言)