【C++学习手札】-using与namespace详解,基本的输入与输出使用

                                          食用指南:本文在有C基础的情况下食用更佳

                                         这就不得不推荐此专栏了:C语言

                                         ♈️今日夜电波:あいつら全員同窓会——ずっと真夜中でいいのに。

                                                                  1:21 ━━━━━━️──────── 4:14
                                                                             ◀️   ⏸   ▶️    ☰

                                         关注点赞收藏您的每一次鼓励都是对我莫大的支持


目录

C++的第一个程序

#include 的解析

第一个程序

using namespace std;

cin、cout、endl

C++对C的扩展

1、::作用域运算符(表明 数据、方法 的归属性问题)

2、命名空间 namespace 解决命名冲突

2.1 namespace命名空间的定义

2.2  命名空间可嵌套命名空间

2.3 可以随时把新的成员加入已有的命名空间中(常用)

2.4 命名空间 可以存放 变量 和 函数

2.5 命名空间中的函数 可以在“命名空间”外 定义

对于namespace的拓展

  3、using使用命名空间

3.1 简化从命名空间的成员访问

 3.2 using 使用整个命名空间

3.3 using 指明使用具体的命名空间成员

 3.4 using声明碰到函数重载

总结


C++的第一个程序

        开始的开始,我们写程序的第一步是啥?

        头文件!

        写C++的第一个程序从头文件开始!

#include 的解析

        iostream是啥意思呢?来我给你分分! I  O  stream

        啥意思呢?        i-input 输入 o-output输出 stream-流

        这个头文件本质上类似C语言的stdio.h,是输入输出流头文件!

        好,头文件找到了我们开始写第一个程序吧!

第一个程序


#include 

//std(标准) 使用标准的命名空间
using namespace std;

//有且只有一个主函数 可以有多个其他函数
int main(int argc, char *argv[])
{
//cout 输出 类似 c语言的printf
//endl 类似 c语言的 换行符
// printf("Hello world!\n");

//cout代表的输出设备
cout << "Hello world!" << endl;//将字符串输出到 控制台

//cin代表的是输入设备
int num =0;
cin >> num;//将建键盘输入的数据 赋值给 num
cout<<"num = "<

        这时候问题又来了?using namespace std;又是啥?

using namespace std;

        使用using namespace std;是一种简化代码的方式,它可以完全打开std命名空间,使得在代码中可以直接使用std中的函数和对象,而不需要在前面加上命名空间名称和  ::   

        啥意思呢? 请看下面这段代码:

    printf("Hello world!\n");//C语言常用形式
	
	int num = 0;
	scanf("%d,&num");
	printf("%d\n",num);

//以下为C++中支持的输出输入方式

    using namespace std;
    cout << "Hello world!" << endl;//加入了using namespace std;后

    int num =0;
    cin >> num;
    cout<<"num = "<> num;
	std::cout << num << std::endl;

        通过比对,我们很容易就能观察到C++中,加入了using namespace std;后,与没有加入前的区别,加入后就不需要在输入输出以及换行前加入std::了!

        接着我们再来看看其中与C语言相对应的操作!

cin、cout、endl

cin == scanf

cout == printf

endl == '\n' 

        注意:endl中的 l 是字母 l 而不是数字 1  !!!


C++对C的扩展

1、::作用域运算符(表明 数据、方法 的归属性问题)

        先看下面这一段代码 

using namespace std;
int a = 10;//全局变量
void test1()
{
    int a = 20;//局部变量
    cout<<"局部变量a = "<【C++学习手札】-using与namespace详解,基本的输入与输出使用_第1张图片


2、命名空间 namespace 解决命名冲突

2.1 namespace命名空间的定义

        看看下面这段代码:

//定义一个名字为A的命名空间(变量、函数)
namespace A {
int a = 100;
}
namespace B {
int a = 200;7 }
void test2()
{
//A::a a是属于A中
cout<<"A中a = "<命名空间只能全局范围内定义!!

2.2  命名空间可嵌套命名空间

        栗子:

namespace A 
{
int a = 1000;
namespace B 
{
int a = 2000;
}
}

void test3()
{
cout<<"A中的a = "<2.3 可以随时把新的成员加入已有的命名空间中(常用) 
  

        栗子:

namespace A {
 int a = 100;
 int b = 200;
 }
 //将c添加到已有的命名空间A中
 namespace A {7 int c = 300;
 }
 void test4()
 {
 cout<<"A中a = "<2.4 命名空间 可以存放 变量 和 函数 
  

         栗子:

namespace A {
 int a=100;//变量

void func()//函数
 {
 cout<<"func-a = "<2.5 命名空间中的函数 可以在“命名空间”外 定义 
  

       栗子:

namespace A {
 int a=100;//变量

void func();
 }

void A::func()//成员函数 在外部定义的时候 记得加作用域
 {
 //访问命名空间的数据不用加作用域
 cout<<"func-a = "<对于namespace的拓展 
  

        1、无名命名空间,意味着命名空间中的标识符只能在本文件内访问,相当于给这个标识
符加上了static,使得其可以作为内部连接。

        2、可以对命名空间取个别名

         栗子:

namespace A
{
    int a=10;
}

void text7()
{
    namespace B = A;
}

  3、using使用命名空间

3.1 简化从命名空间的成员访问

        栗子:

namespace AB {
 int a=100;
 void func(){cout<<"hello world!"<【C++学习手札】-using与namespace详解,基本的输入与输出使用_第2张图片

 3.2 using 使用整个命名空间

        看了上面这个例子,我们不妨思考一下,如果我在定义了一个相同名字的局部变量或者全局变量(此直接使用报错)呢?客官别急,且听我为你 一 一 讲解

        栗子:

        局部变量:

namespace AB {
	int a = 100;
	void func() { cout << "hello world!" << endl; }

}

void test8()
{
	int a = 200;
	

	//使用AB命名空间
	using namespace AB;

	//出现的变量 从AB命名空间中找 找不到 从其他地方中
	cout << "a = " << a << endl;//访问的是局部变量中的a
	cout << "a = " << AB::a << endl;//访问的是AB的a
	func();
}

【C++学习手札】-using与namespace详解,基本的输入与输出使用_第3张图片

         全局变量:

        话不多说!直接上图!

【C++学习手札】-using与namespace详解,基本的输入与输出使用_第4张图片

         这里为VS2022下的报错,可见这样定义是不能用的!但是如果我硬是要这么用呢?看下一点,这时需要指定命名空间中的成员,这样才不会与全局变量冲突!
 

3.3 using 指明使用具体的命名空间成员

        这里先了解两条规则:        

        1、using直接使用 命名空间中的成员 不会和 全局变量冲突。

        2、using直接使用 命名空间中的成员 会和 局部变量冲突。


        栗子:

全局变量

namespace AB {
	 int a = 100;
	 void func() { cout << "hello world!" << endl; }
	
}
 int a = 200;
 void test8()
 {
	 //using直接使用 命名空间中的成员 不会和 全局变量冲突
		 using AB::a;
	
		 cout << "命名空间中a = " << a << endl;//命名空间中的成员 100
	 cout << "全局变量中a = " << ::a << endl;//200
	
		 //但是func使用的时候 必须加作用域
		 AB::func();
	 }

int main()
{
	test8();
	return 0;
}

【C++学习手札】-using与namespace详解,基本的输入与输出使用_第5张图片

 局部变量

        报错啦!!!

【C++学习手札】-using与namespace详解,基本的输入与输出使用_第6张图片

 3.4 using声明碰到函数重载

namespace A {
	 //函数重载 函数名+参数 组合代表是函数的入口地址
	 void func() { cout << " 无参的func" << endl; }
	 void func(int a) { cout << " int的func" << endl; }
	 void func(int a, int b) { cout << " int int的func" << endl; }

}
 void test9()
 {
	 //using指明 使用 A中的func 会对 所有的func起作用
	 using A::func;
	 func();
	 func(10);
	 func(10, 20);
 }

【C++学习手札】-using与namespace详解,基本的输入与输出使用_第7张图片


总结

        不知道各位读者在看完本文后是否跟作者与相同的疑惑,using namespace std;跟using和namespace是不是有啥关联呢?

        这里说明一下main中的std:

        1、使用标准的命名空间std。
        2、std中所有成员名 可以直接使用。
        3、cout endl cin都是命名空间std的成员。

简单的来说就是这个std其实跟我们上面用using、namespace的原理是相同的!

        以下是详细的介绍:

using namespace std;是C++中的一个命名空间的声明语句,它的作用是引入标准命名空间std中的所有成员,使得在代码中可以直接使用std命名空间中的函数、类、对象等,而不需要使用std::前缀。

using声明是C++中的一个语法结构,它可以用来引入命名空间中的特定成员。例如,可以使用using std::cout;来引入std命名空间中的cout对象,之后就可以直接使用cout,而不需要使用std::cout。

namespace是C++中的一个关键字,用于定义命名空间。命名空间可以看作是一个容器,用于将全局作用域中的标识符(如变量、函数、类等)进行分组,以避免命名冲突。例如,std命名空间中包含了许多标准库的函数和类。

因此,using namespace std;语句的作用就是引入std命名空间中的所有成员,使得在代码中可以直接使用std命名空间中的函数、类、对象等,而不需要使用std::前缀。


        感谢你耐心的看到这里ღ( ´・ᴗ・` )比心,如有哪里有错误请踢一脚作者o(╥﹏╥)o!

【C++学习手札】-using与namespace详解,基本的输入与输出使用_第8张图片

                                                                给个三连再走嘛~

你可能感兴趣的:(C++修仙,筑基中,c++,经验分享,c语言,学习,开发语言)