CPP入门基础知识

1  命名空间

命名空间相当于一个更加灵活的全局域,可以用花括号把文件的一部分括起来,并以关键字namespace开头给它起一个名字

如下定义两个命名空间

namespace AA1{
	int a = 10;
}

namespace AA2{
	int a = 20;
}
int main()
{
	cout << AA1::a << endl;  //::是域作用限定符
	system("pause");
    return 0;
}
可以看到两个变量名都可以用a
所以命名空间域解决了全局命名冲突的问题

标准C++库中所有组件都是在一个被称为std的名字空间中声明和定义的。在采用标准C++平台上使用标准C++库中的组件,只要写一个using指示符:using namespace std,就可以直接使用标准C++库中的所有成员。

命名空间可以嵌套

namespace AA1{
	int a = 10;
	namespace AA2{
		int a = 20;
	}
}
int main()
{
	cout << AA1::AA2::a << endl; //访问命名空间AA2里的变量a
	system("pause");
	return 0;
}
2 C++基本的输入输出流

标准输入流是从标准输入设备(键盘)流向程序的数据,在头文件iostream.h中定义了cin,cout,cerr,clog4个流对象。cin是输入流,cout,cout,cerr,clog是输出流。

cin是istream类的对象,它从标准输入设备(键盘)获取数据,程序中的变量通过流提取符“>>”从流中提取数据。流提取符“>>”从流中提取数据时通常输入流中的空格,tab键,换行符等空白字符。

注:只有在输入完数据再按回车键后,该行数据才能进入键盘缓冲区,形成输入流,提取运算符“>>”,才能从中提取数据。

预定义的对象cout是ostream类的一个实例。cout对象连接到标准输出设备,通常是显示屏。cout与流插入运算符“<<”结合使用,C++编译器根据要输出变量的数据类型,选择合适的流插入运算符来显示值。<<运算符被重载来输出内置类型(整型,浮点型,double型,字符串和指针)的数据项。

流插入运算符<<在一个语句中可以多次使用。

3  重载

重载:函数名相同,函数的参数列表不同(包括参数个数和参数类型),返回类型可同可不同。重载是可使函数,运算符等处理不同类型数据或是接受不同个数的参数的一种方法。

注:返回值不同不能构成重载

void foo(int x, int y)
{
	//
}
void foo(char c)
{
   //
}
如上两个函数构成重载,以函数声明void foo(int x,int y)为例,该函数被C编译器编译后在库中的名字为_foo,而C++编译器则会产生像_foo_int_int之类的名字用来支持函数重载和类型安全连接。在找名字链接时,C语言中函数名是唯一的,所以编译器此时会报错。

4  C++缺省函数

缺省参数定义:缺省参数就是在声明方法的某个参数的时候为之指定一个默认值,在调用该方法时如果采用该默认值,就无须指定带参数。

缺省参数使用规则:

1)只有参数列表的后部参数才可以是缺省的

2)一旦使用缺省参数,那么这个参数后面的所有参数都必须是缺省的。(从左至右,第一个为缺省,则所有均为缺省参数)

3)缺省参数只能放在函数声明中,通常在一个头文件中。

int Add(int a = 10, int b = 20)
{
	return a + b;
}
int main()
{
	Add(1, 2);
	Add();
	Add(20);//半缺省,从最后一个参数缺省,20会传给第一个参数a
	system("pause");
	return 0;
}

5  指针和引用

引用:引用不是定义一个新的变量,而是给一个已经定义的变量重新起一个别名。

定义的格式为:类型  & 引用变量名=已经定义过的变量名

引用的特点:

1)一个变量可取多个别名

2)引用必须初始化

3)引用只能在初始化的时候引用一次,不能改变为再引用其他的变量

int main()
{
	int a = 10;
	int& b = a; //b是a的别名
	int& c = b;//引用一个引用变量,别名的别名
	c = 4;
	cout << b << endl;
	cout << c << endl;
	system("pause");
	return 0;
}
const引用

int a = 10;
	const int& b = a; //b是a的别名
	a = 5;  //a改变b的值也会改变
	//b=2;   //b是常量,不能给常量赋值
	cout << b << endl;

	const int d1 = 1;
	const int& d2 = d1;  //常量具有常性,只有常引用可以引用常量
	
	double d3 = 1.1;
	//int& d4 = d3;   //d3是double类型,d4是int,d3赋值给d4时要
	                  //生成一个临时变量,d4引用的是这个带有常性的临时变量,不能赋值
引用做参数(如果形参为引用类型,则形参是实参的别名)

void swap(int& m, int& n)
{
	int tmp = m;
	m = n;
	n = tmp;
}
引用做返回值

int& Add(int d1, int d2)
{
	int ret = d1 + d2;
	return ret;
}
传引用返回时,取ret的地址放到寄存器eax中
如果返回对象出了当前函数的作用域依旧存在,则最好使用引用返回。

引用和指针的区别和联系
1)引用只能在定义时初始化一次,之后不能改变指向其他变量,指针变量的值可变

2)引用必须指向有效的变量,指针可以为空

3)sizeof引用得到的是所指向变量的大小,sizeof指针是对象地址的大小

4)指针和引用自增自减意义不一样

5)引用比指针更安全



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值