C++初了解

      说起C++,想必大家的第一印象就是难,没有几个人敢把精通C++作为自己的一个目标,但是既然选择了学习这门语言,不求可以多么精通,至少应该在自己的能力范围内深入的理解下去。它的学习一般分四个层次,一般人可以达到第二到第三个层次,这样在生活、工作中就已经完全够用了,当然了,如果你已经到了这两个层次的程度,也还是需要继续钻研的。

下面对C++及C++的一些特点进行介绍:

     1.C++到底是一门怎样的语言?

     我们都知道C语言是一种通用的程式语言,广泛用于系统软件与应用软件的开发,是以B语言为基础在贝尔实验室被设计开发出来的,而C++也是在贝尔实验室被实现出来的,起初的时候被叫做“C with Classes”,作为C语言的加强版出现。随后C++不断的增加新特性。虚函数、运算子多载、多重继承、模板、异常处理、RTTI、命名空间也逐渐被纳入标准。1998年ISO颁布C++的第一个国际标准ISO/IEC 14882:1998,现在的最新标准是ISO/IEC 14882:2014。

    C语言几乎是C++的一个子集,所以C语言支持的语法在C++基本都支持,而C++又在C语言的基础上增加了很多新的特性。

   2.为什么C++支持重载?C语言不支持

       重载:在同一个作用域内,一组函数函数名相同,参数不同(参数的个数、类型),这种现象称为函数的重载。

       原因:C++函数名的修饰规则。

       如下图所示,在函数编译链接的过程中,汇编完成后每个函数会生成一个符号表,用来存放函数名和函数地址(下图符号表中地址只是随便举的例子)便于函数调用,如果在main函数中对func函数进行调用,系统执行call命令,然后跳转至func函数处。在C语言中,函数的符号表里只存了函数名,若有多个函数重名,在调用过程中就会出现冲突,而C++则很好的解决了这个问题,C++语言中,符号表里除了函数名还存入了函数地址,当多个函数重名时,因为每个函数的地址是唯一的,调用函数可根据被调函数的地址准确的找到被调函数,从而实现调用。

              

    3.缺省参数

     C++中支持缺省参数,即当调用一个带参函数时,若传入的参数不够或没有传参,被调函数可以用自己的参数列表对未传参的变量进行初始化,如下面代码所示:

#include<iostream>
using namespace std;

int add(int x1 = 1 ,int x2 = 2,int x3 = 3)
{
	return x1+x2+x3;
}
int main()
{
	cout<<add()<<endl;       //1+2+3 = 6
	cout<<add(2)<<endl;      //2+2+3 = 7
	cout<<add(4,5)<<endl;    //4+5+3 = 12
	cout<<add(4,5,9)<<endl;  //4+5+9 = 18
	return 0;
}

注:缺省参数必须从从右往左缺省

    例如上面的add函数亦可以如下方式缺省:

int add(int x1 ,int x2 = 2,int x3 = 3)

int add(int x1,int x2 ,int x3 = 3)

int add(int x1 = 1,int x2 ,int x3 = 3)

 或者不缺省:

int add(int x1,int x2,int x3)

但绝不能出现如下形式:

int add(int x1 = 1,int x2 = 2,int x3)

int add(int x1 = 1,int x2,int x3 )

4.命名空间

    为了防止全局变量之间的命名冲突,C++语言语法中引入了命名空间来解决这一问题。命名空间相当于一个更加灵活的全局域,可以用花括号把全局的一部分括起来,并以关键字namespace开头为该空间命名,使用该变量时只需要指定变量的域名就可以了。如下:

namespace name1
{
	int a = 0;
}
namespace name2
{
	int a = 1;
}

name1::a = 3;   //对name1区域中的a进行修改
name2::a = 4;   //对name2区域中的a进行修改

其中"::"是作用域解析符

    标准C++库中的所有组件都在一个被叫做std的命名空间中声明和定义,在采用标准C++的平台上使用C++库中的组件写一个using提示符,就可以使用库中所有成员:using namespace std;

    若担心库中成员与自定义成员冲突,也可用域名解析符的方式访问库中的成员如:std::cout<<"hello world"<<std::endl。


                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值