C++入门

.1.C++介绍

C&C++的起源历史
C语言是一种通用的程式語言,广泛用于系统软件与应用软件的开发。于1969年
至1973年間,為了移植與開發UNIX作業系統,由丹尼斯·里奇與肯·汤普逊,以B
语言为基础,在贝尔实验室設計、开发出來。
貝爾實驗室的比雅尼·斯特勞斯特魯普博士在20世紀80年代發明並實現了C++。
起初,這種語言被稱作“CwithClasses”(“包含類別的C語言”),作為C語
言的增強版出現。随后,C++不斷增加新特性。虚函数(virtual
function)、運算子多載(operatoroverloading)、多重繼承(multiple
inheritance)、模板(template)、异常处
理(exception)、RTTI(Runtimetypeinformation)、命名空
間(namespace)逐漸納入標準。1998年,國際標準組織(ISO)頒布了
C++程式設計語言的第一個國際標準ISO/IEC14882:1998,目前最新标准为
ISO/IEC14882:2014。根據《C++編程思想》(ThinkinginC++)一書所評
述的,C++與C的效率往往相差在±5%之間。
C++的发展历史
C几乎是C++的一个子集,所以C语言支持的语法在C++基本都支持并需要使
用。Cplusplus(C++),所以在C的基础上又有了很多新的特性。

内置类型:C++中这些基本的数据类型称为内置函数(语言内部已定义的基本类型)。

自定义类型:自用使用struct/class/enum/union等定义的。
2.为什么C++支持重载?C语言不支持--重点

函数重载的定义;在同一作用域类,一组函数的函数名相同,参数列表不同(个数不同/类型不同),返回值可同可不同。

通俗的来说,C语言重载命名会发生冲突,而C++却可以重载。那么编译器是如何解决命名冲突问题?反汇编一个含有重载的C++生成的执行文件,我们在Linux下执行命令objdump -d a.out > log.txt(反汇编并将结果重定向到log.txt文件中),通过分析文件,我们发现重载函数的名字发生了改变,这就是C++函数名修饰规则,因此C++并不会发生命名冲突。
3.缺省参数

缺省函数就是在声明函数的某个参数的时候为之指定一个默认值,在调用该函数的时候如果没有指定该参数的值,则采用该默认值。

int Add1(int a = 1,int b = 2)
{
    return a + b;
}//全缺省函数

int Add2(int a,int b = 1)
{
   return a+b;
}//半缺省函数

void Test()
{
   Add1(); //3
   Add1(1);  //3
   Add(1,1);  //2
   Add2(2); 3
}

使用缺省函数应注意:

    对于缺省函数,缺省的顺序只能从右往左连续缺省,因为在栈帧中函数处理顺序也是从右往左。

4.命名空间 

命名空间域是随着标准C++引入的。它相当于一个更加灵活的文件域(全局域),可以用花括号把文件的一部分括起来,并以关键字namespace开头给它起一个名字。

namespace name1
{
   int a = 0;
}


namespace name2
{
   int a = 0;
}

name1::a = 3;

name2::a = 4;


命名空间域解决全局命名冲突的问题.

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

using namespace std;

就能直接使用C++库中所有的成员

或者std::成员  的方式也可以使用C++库里的成员。

其中 :: 是作用域解析符

namespace std  //std是C++标准库的名字空间
{
   //标准库成员
}

实现一个简单的C++程序

#include<iostream>
using namespace std;

int main()
{
   std::cout<<"hello world"<<std::endl;
   return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值