C++笔记

1、C++基本概念

C++语言特点:

兼容C语言的特性,保留C的性质,添加新的特性(面向对象),是C语言的超集

C++应用领域:

服务器

科学计算

游戏引擎

图形应用

2、C++编译与编写

1、C++文件

C++源文件: .cpp

C++头文件:.h

C++执行 ,以 main函数作为开始

如果使用C库函数,则头文件使用新的表示方式

#include <cxxxx>

编译C++程序:

g++  xxx.cpp

2、C++对C的扩展

1、强制类型转换

C:(类型)变量值

C++:类型(变量/值)

2、内联函数

内联函数:把函数设计为内联函数后,当调用函数时,则函数的功能代码在对应调用位置进行展开执行,避免函数的跳转执行(编译时);则函数运行多次定义

语法:

inline  返回值类型  函数名(参数列表)

{

函数体

}

函数设计为inline函数,由编译器来实现展开,能否展开编译器决定

相比于普通函数,耗时比较少,效率比较高

在声明内联函数时的要求:

1、内联函数一般只适用于短小,且重复率比较高

2、内联函数一般不放循环体等耗时操作

3、引用&

引用:

是指已经存在的变量,另取一个别名,引用变量和已知变量共用同一段内存空间,代表同一个变量

语法:

数据类型 & 引用名 = 变量名;

注意:

1、引用变量一旦定义就必须要进行初始化,表示对哪个变量取别名,之后都不可能改变:引用变量是哪个变量的别名

2、引用变量初始化完成之后,所有的操作都是对引用变量进行操作,而不是重新赋值取别名

函数的参数为引用:

函数的参数是实参的别名

函数的返回值为引用:

返回值为变量的别名,返回对应的变量

引用和指针的区别:

1、定义指针时,可以不进行初始化,可以存储为多个地址,引用必须进行初始化(引用只能绑定上一个变量,之后都是这个变量的别名)

2、指针会分配内存空间,存储地址,引用不会额外分配空间

4、函数参数默认值

是指声明一个函数时,如果函数带参数,C++运行可以对参数先设置一个默认值(初始值),当调用时,如果对对应的参数没有传递实参,则使用默认值参数值

默认值的添加:

从后往前添加,函数的参数在添加前一个参数的默认值时,要保证之后的参数都有默认值

在调用函数设置实参时:

从第一个开始,依次往后添加实参,遇到默认值就用实参替换

语法:

返回类型  函数名(参数1,参数2,参数3 = 值,参数4 = 值)

{

}

注意:

如果函数有多个参数,并且其中有带默认值的参数,那么带默认值参数不能放在不带默认值参数之前

5、函数重载

函数重载:

在C++中,在相同作用域允许函数名相同,函数的参数(参数的类型、参数的个数)不同

注意:当函数参数存在默认值时:带默认值参数的函数可以使用默认值也可以不使用默认值,这一个函数就代表多个函数

如:

int add(int a,int b);

int add(int a);//函数重载

int add(int a,float b);//函数重载

int add(int a,int b,int c);//函数重载

float add(int a,int b);//不是函数重载,错误

6、名字空间

在程序中定义多个相同的标识符名字,在程序中需要区别相同名字的标识符

名字空间(命名空间):

在全局范围内取出一块区域并对其进行命名,C++会将该区域赋予一个作用域,可以把有冲突的标识符存储在这个名字空间作用域中

名字空间语法:

namespace   名字空间名称

{

冲突的内容

变量

函数

结构体

}

通过名字空间把冲突名字分别存储到不同的名字空间中,解决冲突(属于不同的名字空间作用域)

作用域运算符 ------  ::   表示访问某个作用域中的成员

对名字空间的内容访问:通过名字空间进行访问

1、使用名字空间成员时,通过作用域运算符访问

名字空间名称  :: 名字空间成员

2、提前声明要使用名字空间成员,通过关键字 using 声明

声明:

using  名字空间名称::名字空间的内容;//告诉编译器,如果之后出现了 指定的内容,就表示使用的名字空间名称中的对应内容

3、提前编译指定使用某个名字空间

编译指令:

using   namespace  名字空间名称;//告诉编译器,只要之后有内容和 名字空间中的内容同名,就表示使用的是名字空间中的对应内容

7、动态内存

C语言:malloc、free

C++语言:new、delete

动态内存分配:

指程序在运行时才分配内存空间,称之为动态内存分配。

C++提供运算符:new/delete用于动态内存的开辟和释放(new:申请空间;delete:释放空间)

1、使用new申请内存空间

运算符:new,申请以 数据类型为单位申请

new + 数据类型 -------运算的结果就是申请空间的首地址

new + 数据类型[个数]--------返回整个空间的首地址

new在申请时,可以进行初始化

new + 数据类型(值)

new + 数据类型[个数](值1,值2,......)

2、使用delete释放内存空间

运算符:delete,释放申请的空间

delete + 首地址 :释放单个空间

delete + [] 首地址 : 释放申请的多个空间

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值