C++学习记录

一.命名空间

1.引言

        在我们编写代码时,我们创建的种种变量可能与环境或他人创建的变量产生冲突

        举个例子

int rand = 0;
int main()
{
	int rand = 1;
	printf("%d", rand);
	return 0;
}

        这里要先说明局部变量和全局变量的概念,简单理解为main函数里的叫局部变量,main函数外的叫全局变量。变量名相同时,局部变量优先 。这段代码的结果自然而然为1。

#include<cstdlib>
int rand = 0;
int main()
{
	int rand = 1;
	printf("%d", rand);
	return 0;
}

        这段代码的不同在于我声明了头文件<cstdlib>,这时候编译会报错。 

        这就是因为我命名的rand与标准库函数中的rand重名。https://legacy.cplusplus.com/reference/cstdlib/rand/?kw=rand

        那如果我们就想用rand作为变量名可不可以?当然可以,C++的创始人本贾尼·斯特劳斯特卢普就为我们提供了方法。

2.namespace的定义和使用

        这个方法就是使用namespace关键字。

(1)定义

        定义命名空间,需要使用namespace关键字,后面写上命名空间的名字和一对{}。

        还是以刚才的代码为例。

namespace ATaylorSu 
{
	int rand = 0;
}

        有意思的是,如果我们的空间名字重复,就可以改用套娃的方式 来命名。

namespace AT
{
	namespace ATaylorSu
	{
		int rand = 2;
	}
}


namespace ATaylorSu
{
	int rand = 0;
}

        例如这样

(2)使用

        我们已经明白了怎么命名空间,接下来就要明白怎么使用。

        总体来说,命名空间的使用有三种方式:

        1.加命名空间名称及作用域限定符

namespace ATaylorSu
{
	int rand = 3;
}


int main()
{
	int rand = 1;
	printf("%d", ATaylorSu::rand);
	return 0;
}

        两个“::”就表示作用域限定符。

        2.使用using namespace 命名空间名称引入

        这个可以理解为将namespace变为一个公共区域。

using namespace ATaylorSu;
int main()
{
	printf("%d\n", ATaylorSu::rand);
	return 0;
}

        3.使用using将命名空间中某个成员引入 

        这种适合引空间中某个变量。

using ATaylorSu::rand;
int main()
{
	printf("%d\n", ATaylorSu::rand);
	return 0;
}

        这里要留意这种方法和前两种编写方式不同。 

二.C++输入和输出

1.引言

        这里我想向我第一次接触C语言时那样,呈现“Hello World”,我应该用什么方法呢?

#include<iostream>
using namespace std;
int main()
{
	cout << "Hello World" << endl;
	return 0;
}

         如图,用C++的方式写出"Hello World",头文件<iostream>不用多说,这里我想说一下”using namespace std“,有了前面的讲解,我们一眼明白这是第三者namespace的使用法,我们可以将std理解为其是C++标准库的命名空间名,C++将标准库的定义实现都放到这个命名空间中。

2.cout和cin

(1)cout

        上述代码中,不同于 printf("Hello World") 的是"cout"和"endl"和"<<",这三者不难理解。

        cout是标准输出对象(控制台),<<是流插入运算符,endl是结束。

        cout的作用和printf类似,但也有不同,待我们看完cin后说明不同之处。

(2)cin

int main()
{
	int i;
	cin >> i;
	cout << i << endl;

	return 0;
}

        如果我告诉你cin和scanf一样你能不能立刻理解cin的用法?

        这里要注意cin的符号是">>",不要和cout的弄混。 

(3)不同

        细心的你可能发现了,我们在用cout和cin时不需要声明对象的类型,如整形对应 %d ,浮点数对应 %f ,这便是C++和C的区别,不需要像printf/scanf输入输出时那样,需要手动控制格式。 C++的输入输出可以自动识别变量类型。

三.缺省参数 

1.引言

        在声明函数的某个参数的时候为之指定一个默认值,在调用该函数的时候如果采用该默认值,你就无须指定该参数。

2.分类

(1)全缺省参数

void Fun(int a = 1,int b = 2,int c = 3)
{
	cout << a << " " << b << " " << c << endl;
}

int main()
{
	Fun();
	Fun(10);
	Fun(10,20);
	Fun(10,20,30);

	return 0;
}

(2)半缺省参数

void Fun(int a, int b = 20, int c = 30)
{
	cout << "a = " << a << endl;
	cout << "b = " << b << endl;
	cout << "c = " << c << endl << endl;
}

int main()
{
	Fun(1);
	Fun(1,2);
	Fun(1,2,3);

	return 0;
}

        

        要特别注意,半缺省参数必须从右往左依次来给出,不能间隔着给 。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值