C++基础学习(1)

C++基础(1)

C++面向对象的三大特性:封装、继承、多态

一、双冒号运算域::全局作用域

Cout<<”  ”<<::atk<<endl

二、命名空间namespace//必须定义到全局作用域

写法:namespace  作用域名

{作用域运算(函数、变量、结构体、类…)}
1、命名空间可以嵌套命名空间

2、命名空间是开放的,可以添加内容

3、匿名命名空间可以起别名

三、using

Using的声明要注意避免二义性;写了using声明后下面这行代码说明以后看到的定义是用namespace的空间下的,但编译器有就近原则,所以可能会产生二义性

四、C++对C的增强

1、全局变量的检测增强

2、函数检测、参数类型、返回值检测、函数调用参数检测增强

3、类型转换检测:malloc返回void* c语言中可不强转,但C++必须强转

4、struct增强:C++中struct可以加函数;使用struct是可以不加struct关键字

5、bool类型加强(C语言中没有bool类型)

  Bool flat;//职只有真或假

6、三目运算符增强

7、const增强:C语言中const修饰的变量为伪常量,编译器会分配内存,C++中const不会分配内存,编译器会临时开辟空间

五const分配内存、

C语言中const默认外部链接,C++默认const为内部链接,extern提高作用域

内存分配:

1、const分配内存,取地址会分配临时内存

2、extern编译器也会给const变量分配内存

3.用普通变量初始化const的变量

4、自定义数据类型加const也会分配内存

#define MAX 1024(MAX被替换成1024,编译器不识别MAX,所以用const int MAX=1024来表示)

(只要分配了内存的,都可以用指针修改)

六、尽量用const代替define

Const与define的区别:

1、const有类型,可进行编译器类型安全检查,而#define的宏定义没有类型

2、const有作用域,而#define不重视作用域,默认定义到文件结尾处,处于一直存活状态

七、引用基本用法

引用:起别名

&写在左侧叫引用;写在右侧为取地址

  1. 引用的基本语法:  Type & 别名 =原名
  2. 引用必须初始化,引用初始化后就不可以修改了
  3. 对数组建立引用
  1. 给数组起别名后可以用别名进行输出
  2. 第二种方式起别名: typedef  int (ASDFGHJKLA)[10](一个具有10个元素的int类型数组)

八、参数的传递方式:值传递,地址传递,引用传递(类似传地址)

九、引用的注意事项

1、引用必须引一块合法的内存空间

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

如果函数返回值是引用,那么函数的调用可以作为左值

十、引用的本质:在C++内部实现是一个指针常量(所以引用必须初始化)

引用可以作为一个已定义变量的别名

基本语法: Type & ref = val

(1)&不是求地址运算,而是起标识作用

(2)类型标识符是只目标变量的类型

(3)必须在声明引用变量是进行初始化

(4)引用初始化之后不能改变

(5)不能有NULL的作用,必须确保引用是和一块合法的存储单元关联

(6)可以建立对数组的作用

当内部发现是引用,会转换为指针

十一、指针的引用

修改一级指针可以用二级指针

用一级指针的引用可以代替二级指针

利用指针引用开辟新的空间

十二、常量引用

常量引用不可以引用不合法内存

Const int &ref =10  编译器处理方式:int tmp =10 ; const int & ref = tmp;

常量引用使用场景,用来修饰形参。如果只是想显示内容。而不修改内容,就可以用const修饰这个形参

Const int a = 10;会分配内存

Const int & param //防止函数中意外修改数据

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值