c++学习之概述--从C到C++

c++的学习路线: 在这里插入图片描述

c++同c的不同:(三大性质、库)

​    抽象性、封装性、继承性、多态性;标准模板库、面向对象编程… …

C++的I/O是以字节流的形式实现的,流(stream)实际上就是一个字节序列。

在这里插入图片描述

命名空间: — 命名空间的使用
  • 命名空间:实际上就是一个由程序设计者命名的内存区域,程序设计者可以根据需要指定一些有名字的空间域,把一些全局实体分别放在各个命名空间中,从而与其他全局实体分隔开来。

  • 命名空间是ANSIC++引入的可以由用户命名的作用域,用来处理程序中常见的同名冲突。

在这里插入图片描述
在这里插入图片描述

new/delete 与 malloc/free比较

new/delete是c++语言的运算符malloc/free是c++语言的标准库函数不是运算符,不在编译器控制权限之内
new运算符根据对象的类型自动决定其大小malloc要使用sizeof运算符指定分配的大小
new返回指向此类型的指针malloc返回指向void*类型的指针,要类型强制转换
int *p = new int; delete p;int *p = (int *)malloc(sizeof(int) * 4)
int *p = new int [5]; delete []p;

   两者申请和释放要配对出现、free和delete释放内存后,没有把指针设置成NULL会导致“野指针”

引用

  1. 定义引用时必须初始化;可以将一个引用赋予给某个变量;
  2. C语言中没有引用,C++中才有引用,引用一般用作函数的参数或者函数的返回值;提高使用效率,引用不占存储单元。
  3. 使用引用作为传递函数的参数,在内存中并没有产生实参的副本,他是直接对实参操作。
  4. 如果输入参数以值传递的方式传递对象,则宜改用“const &”方式来传递,这样可以省去临时对象的构造和析构过程,从而提高效率。
  5. 如果既要利用引用调高使用效率,又要保护传递给函数的数据不在函数中被改变,就应当使用常引用。
  6. 如果函数的返回值是一个对象,有些场合用“引用传递”替换“值传递”可以提高效率,有些场合不可以。
常引用:保护传递给函数的数据不在函数中被改变

非const引用只能绑定到该引用同类型的变量。 int &p = 20; x 错--类型不匹配

const引用可以绑定到不同但相关类型的对象,或者绑定右值。const int &p = 20; 对

类型不同—>保存副本,占用空间,再次修改其值时,const int &p的值不变
类型相同—>不占用空间

   不允许返回局部变量的地址—不允许返回的引用对应于一个局部变量(局部变量在栈中)

函数

函数的四部分:返回类型、函数名、参数表、函数体

基础函数:内联函数、函数重载、模板函数、友元函数

成员函数:构造/析构函数、常成员函数、静态成员函数

内联函数inline:解决运行效率问题(编译时)
  1. 适用于函数体不大、但被频繁调用的函数的函数调用
  2. 内联函数不能有复杂的控制语句
  3. 递归函数不能是内联函数,类中的函数都是内联函数
  4. 内联函数有与带参数的宏定义相同的作用和相似的肌理,但他消除了宏定义的不安全性
重载:(多态性)

   同一作用域内,函数名相同,参数的个数或类型不同

带默认参数值的函数:

   形参的默认值必须在声明中指定;默认值的定义应该从右到左;

注:形参的默认值不能为局部变量

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值