食用指南:本文在有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++的第一个程序从头文件开始!
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;是一种简化代码的方式,它可以完全打开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 == scanf
cout == printf
endl == '\n'
注意:endl中的 l 是字母 l 而不是数字 1 !!!
先看下面这一段代码
using namespace std;
int a = 10;//全局变量
void test1()
{
int a = 20;//局部变量
cout<<"局部变量a = "<
输出结果为:
看看下面这段代码:
//定义一个名字为A的命名空间(变量、函数)
namespace A {
int a = 100;
}
namespace B {
int a = 200;7 }
void test2()
{
//A::a a是属于A中
cout<<"A中a = "<
注意:命名空间只能全局范围内定义!!
栗子:
namespace A
{
int a = 1000;
namespace B
{
int a = 2000;
}
}
void test3()
{
cout<<"A中的a = "<
栗子:
namespace A {
int a = 100;
int b = 200;
}
//将c添加到已有的命名空间A中
namespace A {7 int c = 300;
}
void test4()
{
cout<<"A中a = "<
栗子:
namespace A {
int a=100;//变量
void func()//函数
{
cout<<"func-a = "<
栗子:
namespace A {
int a=100;//变量
void func();
}
void A::func()//成员函数 在外部定义的时候 记得加作用域
{
//访问命名空间的数据不用加作用域
cout<<"func-a = "<
1、无名命名空间,意味着命名空间中的标识符只能在本文件内访问,相当于给这个标识
符加上了static,使得其可以作为内部连接。
2、可以对命名空间取个别名
栗子:
namespace A
{
int a=10;
}
void text7()
{
namespace B = A;
}
栗子:
namespace AB {
int a=100;
void func(){cout<<"hello world!"<
看了上面这个例子,我们不妨思考一下,如果我在定义了一个相同名字的局部变量或者全局变量(此直接使用报错)呢?客官别急,且听我为你 一 一 讲解
栗子:
局部变量:
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();
}
全局变量:
话不多说!直接上图!
这里为VS2022下的报错,可见这样定义是不能用的!但是如果我硬是要这么用呢?看下一点,这时需要指定命名空间中的成员,这样才不会与全局变量冲突!
这里先了解两条规则:
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;
}
局部变量
报错啦!!!
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);
}
不知道各位读者在看完本文后是否跟作者与相同的疑惑,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!
给个三连再走嘛~