1、基础类型有哪些? (无符号与符号类型)
1. char:8位(bit,8bit=1Byte)
2. short:16位(至少16位)
3. int:至少与short一样,通常为32位(4字节)
4. long:至少与int一样
5. long long:至少与64位,且不少于long。
6. bool
在程序里可以用sizeof函数来测试每种类型的长度,单位为字节
2、常见的作用域主要分为几个类型。
全局作用域、函数作用域、块状作用域、动态作用域。
对象 | 类型 |
global/window | 全局作用域 |
function | 函数作用域(局部作用域) |
{ } | 块状作用域 |
this | 动态作用域 |
3、字符串类 string
- 1、可以直接赋值
- 2、可以直接进行判断
- 3、原理:(函数重载,操作符重载)
- 4、底层:不是使用 '\0'作为结束
- 5、底层:使用动态堆空间数据分配处理(内存空间管理)
32位-> (sizeof(string) == 24字节)
64位-> (sizeof(string) == 32字节)
4、引用
引用与指针的不同:
- 不存在空引用。引用必须连接到一块合法的内存。
- 一旦引用被初始化为一个对象,就不能被指向到另一个对象。指针可以在任何时候指向到另一个对象。
- 引用必须在创建时被初始化。指针可以在任何时间被初始化。
1、指针常量
如果在定义指针变量时候,指针变量前用const修饰,被定义的指针变量就变成了一个指针类型的常变量,指针类型的常变量简称为指针常量。
格式如下
数据类型 * const 指针变量=变量名;
修饰符const与指针变量紧邻,说明指针变量不允许修改,既然指针变量的值不能修改,所以一定要在定义的时候给定初值(指向一个确定存在的地方)
2、常量指针
如果在定义指针变量的时候,数据类型前用const修饰,被定义的指针变量就是指向常量的指针变量,指向常量的指针变量称为常量指针,格式如下
const 数据类型 *指针变量=变量名;
或者 数据类型 const * 指针变量=变量名;
定义一个常量指针后,指针指向的值就不能被改变,即不能通过指针变量直接更改指针指向的值
3、常指针常量
格式为
const 数据类型 * const 指针变量=变量名;
数据类型 const *const 指针变量=变量名;
指针不能改变,指针指向的值也不能改变
5、函数重载
条件1:在同一作用域内,函数名同名
条件:参数类型不同 / 参数的个数不同 / 参数类型位置不同
注意事项1:返回值不同不可以作为函数重载的条件
本质:gcc 编译成汇编,函数名不会发生改变 gcc -s
本质:g++ 编译成汇编,函数名会发生改变
总结:是g++编译器自动根据参数类型来自动选择最为匹配的函数重载
注意问题:
1、当类型不匹配,但是都可以作为隐式类型转换时会出现二意性
2、当默认参数和函数重载同时出现的时候,可能会出现二意性
6、类和对象,类的封装
/********** 类的封装 注意事项 ********
1、在c++中去实例化对象的时候可以不需要加 struct 或者 class
2、定义类 与 我们之前c结构体不一样
3、空类 占1字节,用于表示该内存地址上存储着一个类
4、默认访问权限:
struct -> 公有权限(public)
class -> 私有权限(private)
----------------------------------------
类外 类内 派生
公有权限 y y y
保护权限 n y y
私有权限 n y n