C++入门基础知识

C++入门

1.命名空间
在C++中,为了避免标识符的命名发生冲突,标准C++引入了关键字 namespace (命名空间),可以更好的控制标识符的作用域。
先看一个程序:

#include<iostream>
using namespace std;
int a = 10;
namespace A
{
	int a = 20;
}
namespace B
{
	int a = 30;
}
namespace C
{
	int a = 40;
	namespace D
	{
		int a = 50;
	}
}
int main()
{
	cout<<a<<endl;      //访问全局变量std空间的a=10
	cout<<A::a<<endl;   //访问A空间内的a=20
	cout<<B::a<<endl;   //访问B空间内的a=30
	cout<<C::a<<endl;   //访问C空间内的a=40
	cout<<C::D::a<<endl;//访问C空间里嵌套D空间的a=50
	return 0;
}
命名空间可以是全局的,也可以是一个命名空间嵌套一个命名空间,但不能位于类和代码块中。
作用:建立一些互相分割的作用域,把一些全局实体分割开来,解决名字冲突的问题。

2.C++基本输入输出流
(1)标准输入流对象cin
cin是标准的输入流对象,在程序中用于代表标准输入设备,通常指键盘。运算符“>>”表示从标准输入流对象cin读取数的数值传给右方指定的变量。cin必须与输入运算符“>>”一起使用。
下面代码展示输入一个变量:
cin>>a>>endl;
此时,用户从键盘输入的值会自动的转换为变量a的类型。
注:cin允许输入一连串的变量:
cin>>a>>b>>c>>d;
(2)标准输出流对象cout
cout是标准输出流对象,在程序中用于代表标准输出设备,通常指屏幕。运算符"<<",表示将右方变量的值写到标准输出流cout对象中
,即显示在屏幕上。cout必须与输出运算符"<<"一起使用。
下面展示输出一个变量:
cout<<a<<endl;
使用插入运算符时,可以把多个不同类型的数据组在一条语句中,也可以输出表达式的值。如下:
int a = 12;
double b = 13;
int c = a+b;
cout<<a+b<<c<<endl;
3.重载
C++为什么支持重载呢?为什么C不可以重载?
在C++中,在同一个作用域中,函数名相同,函数参数类型不同或者参数个数不同,既可以构成重载。
看一个例子:
#include<iostream>
using namespace std;
int Add(int x,int y)  //C++编译后命名为_z3Addxy
{                  
	int z = 0;
	z = x+y;
	return z;
}
int main()
{
	int m = 0;
	m = Add(2,3);
	cout<<m<<endl;
	return 0;
}
从上面的例子,我们可以看出C++对函数名字修饰规则跟函数名及函数参数都有关,而C对函数名没有这样的修饰规则;所以C++支持重载,而C不支持重载。
4.C++缺省参数
所谓缺省顾名思义就是在声明函数时的某个参数指定了默认值,在调用该函数的时候,如果想要使用默认值,就无需再指定该参数
。缺省参数使用规则:指定默认参数时,你只能从后往前开始指定,也就说,你想指定某个参数为默认值,往后的参数都需要指定默认值。即:带缺省值的参数必须放在参数表的最后面。
缺省参数分为:半缺省和全缺省。
#include<iostream>
using namespace std;
int Add(int x,int y=3) //半缺省 
{                  
	int z = 0;
	z = x+y;
	return z;
}
int Sub(int x=2,int y=1)//全缺省
{                  
	int z = 0;
	z = x-y;
	return z;
}
int main()
{
	int m = 0;
	int n = 0;
	m = Sub();
	n = Add(6);
	cout<<m<<n<<endl;
	return 0;
}
5.指针和引用(区别和联系)
(1)指针是个是个实体,而引用只是个别名。
(2)引用只能在初始化的时候引用一次,之后不能改变为再引用其他变量;而指针还可以再改变它的指向。
(3)引用必须指向有效的变量,而指针可以为空指针。
(4)sizeof "引用"得到的是指向变量的大小;sizeof"指针"对象地址的大小。
(5)指针和饮用的自增(++)自减(- -)运算意义不一样。
(6)相对而言,引用比指针更安全。

先看一段代码:
#include<iostream>
using namespace std;
void fun(int* &p)    //用引用做参数
// void fun(int** p) //用指针做参数
{
	p=(int*)malloc(4);
	// *p=(int*)malloc(4);
}
int main()
{
	int *ptr = 0;
	fun(ptr);
	*ptr = 10;
	return 0;
}

上述代码展示可以看到,用指针做参数和用引用做参数,同样都可以达到效果使得ptr申请到内存,从而使得被复制赋值合法。
这类通过指针接收参数叫指针传递;通过引用做参数的叫做引用传递,即引用是实参的别名。

注:(1)不要返回临时变量的引用。
       (2)若返回对象出了当前函数的作用域依旧存在,则最好使用引用,这样做更高效。



  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值