C++学习之基础概念

C++历史

“C with Class”阶段,C语言基础上的特征主要有:类及派生类、共有和私有成员、构造函数和析构函数、友元、内联函数、赋值运算符的重载,等等。


1985年1.0版新增加:虚函数的概念、函数和运算符的重载、引用、常量,等等。
1989年2.0版新增加:类的保护成员、多重继承、对象的初始化与赋值的递归机制、抽象类、静态成员函数、const成员函数,等等。
1993年3.0版新增加:模板(template),解决了多重继承产生的二义性及其构造/析构函数的处理问题,等等。
1998年C++语言及库标准化:名字空间、标准模板库(STL)、通用算法类和字符串类型,等等。该标准通常简称ANSI C++或ISO C++ 98标准,此后每5年更新一次标准。
2003年通过了C++标准第二版(ISO/IEC 14882:2003)C++03:这个新版本是一次技术性修订,对第一版进行了整理—修订错误、减少多义性等,但没有改变语言特性。
国际标准化组织于2011年9月1日出版发布《ISO/IEC 14882:2011》简称ISO C++ 11标准,取代现行的C++标准、C++98和C++03。

C++里的特性及专业术语

1、类class描述现实的事物(特征&行为),实质都是抽象的,不存在的。如身高、年龄、吃饭、走路
2、对象对象就是类的实例化,对象是实实在在存在于现实世界,但是抽象的,特指的概念
3、继承一个类获得另外一个或多个类共享的特征&行为,例如:儿子有父亲的一些特征
4、多态多种形态,一种接口多种方法。如你(8岁)  父亲 买票行为--你买票(半票)--父亲(全票)
5、封装 c语言里函数就是封装的概念,将数据和数据的操作封装在一起
6、组合 一个类中包含了另一个类的对象
7、静态绑定 一个数据的表达式的类型在编译的时候就已经确定了
8、动态绑定 一个数据的表达式的类型在运行的时候才确定,如多态
9、特征&属性 在C++特征&属性就是代表变量
10、行为&方法 在C++行为&方法就是代表函数

C++的程序的编译

1、预处理(就是将多个文件进行关联,并处理那些替换转换#define num 100)

2、编译(检查代码是否符合C++规范,并且将源码翻译成汇编语言)

3、汇编(将汇编语言翻译成机器语言(二进制))

4、链接(生产可执行文件)

C与C++的编程区别

C语言 :面向过程 

        将现实世界中的问题的解决步骤流程按照函数一步一步的进行实现

C++    :面向对象

        一切皆对象,将现实世界中的事物抽象成对象,用对象去处理相应的实际的问题

总结:在维护方面,C++更能精确查找问题

引用

作用:给变量取别名,别名与变量都指向同一空间     语法:数据类型 &别名 = 原名

                                               int a = 10;        int &aa = a;

引用的本质

        在C++内部实现是一个指针常量(直接可以当指针常量来进行使用)

引用的注意事项

        1、引用必须初始化        既 int &aa = a;  ,不能 int &aa;

        2、引用初始化过后,不可以改变

引用作为函数参数的使用

        函数传递参数时可以让形参修饰实参(优点:简化指针)

void myswep01(int *a, int *b)    
{
    int temp = *a;
    *a = *b;
    *b = temp;
}

void myswep02(int &a, int &b)
{
    int temp =a;
    a = b;
    b =temp;
}

        可以发现,做参数引用时,他就和指针效果是一样的。引用它修改的就是实参的值。相当于传递地址过去

引用做函数返回值

1、不要返回局部变量的引用

int& test01()    
{
    int a = 10;//这是一个局部的变量,应该在该函数结束的时候就没有了
    return a;
}

当主函数main调用时,第一次可能值还在,第二次值就是乱码了。

2、函数的调用可以作为左值

int& test02()
{
    static int a = 10; //该常量存在于全局区,只有程序结束才会消灭
    return a;
}

int main()
{
    int &ref = test02();

    cout << "ref=" << ref << endl;

    test02() = 20;//可以作为左边赋值

    cout << "ref=" << ref << endl;
}

执行会发现结果会发生改变,开始ref=10,第二次ref=20。

函数提高

函数默认参数

在C++中,函数的形参列表中的参数是可以默认值的(初始值)       

 语法:返回值类型        函数名(参数=默认值){}

int func(int a,int b=10, int c=20)
{
    return a+b+c;
}

int main()
{
    cout << func(10,20<<endl;
    return 0;
}

执行结果为50.        既没有传输参数则使用默认参数。

注意事项:

        1、当默认参数开始有默认值时,则默认值后面的参数必须都有参数。

        2、函数声明和函数实现只能有一个有默认参数(两个都有则无法进行正常使用)。

函数占位参数

在C++中函数的形参列表里是可以有占位参数,用来做占位,调用函数时必须填补该位置

语法:返回值类型        函数名(数据类型){}

void func(int a, int)//后面的到时候传一个相同类型的参数进来
{
    cout << this is func << endl;
}

占位参数同样可以进行默认值。

函数重载

作用:函数名可以相同,提高复用性

函数重载满足条件:

       1、 同一个作用域下

        2、函数名称相同

        3、函数参数类型不同或者个数不同或者顺序不同

注意

        1、函数的返回值不可以作为函数重载的条件        返回值类型(void、int)

        2、引用可以作为重载的条件

        3、函数重载碰到默认参数(执行错误)

void func()    //原函数
{
    cout << func is << endl;
}

void func(int a)    //参数不同
{
    cout << func is << endl;
}

void func(float a)    //类型不同
{
    cout << func is << endl;
}

void func(float a, int a)    //顺序不同、个数不同
{
    cout << func is << endl;
}

void func(int a, float a)
{
    cout << func is << endl;
}
  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

啵啵520520

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值