关键字与运算符
指针与引用
引用是变量的别名,从一而终,不可变,必须初始化
const关键字
在定义时就赋予初值,只读。
- 常量指针(底层const),指向只读对象,不可通过指针改变对象的值。
const int* a = &temp;
int const *a = &temp;
- 指针常量(顶层const),定义一个指针,在定义时初始化,其他地方不变。指针的不可变性。
int temp = 10;
int* const p = &temp;
*p = 9;//改变指针指向的值,无法改变指针位置
define和typedef 的区别
define
- 只是简单的字符串替换,没有类型检查
- 是在编译的预处理阶段起作⽤
- 可以⽤来防⽌头⽂件᯿复引⽤
- 不分配内存,给出的是⽴即数,有多少次使⽤就进⾏多少次替换
typedef
- 有对应的数据类型,是要进⾏判断的
- 是在编译、运⾏的时候起作⽤
- 在静态存储区中分配空间,在程序运⾏过程中内存中只有⼀个拷⻉
define和inline区别
inline
- inline是先将内联函数编译完成⽣成了函数体直接插⼊被调⽤的地⽅,减少了压栈,跳转和返
回的操作。没有普通函数调⽤时的额外开销; - 内联函数是⼀种特殊的函数,会进⾏类型检查;
- 对编译器的⼀种请求,编译器有可能拒绝这种请求;
限制: - 不能存在任何形式的循环语句
- 不能存在过多的条件判断语句
- 函数体不能过于庞⼤
- 内联函数声明必须在调⽤语句之前
override和overload
override
⼀般是⽤于⼦类在继承⽗类时,重写⽗类⽅法。
overload
重载,这些⽅法的名称相同⽽参数形式不同
new和malloc
C++ 三大特性
访问权限
C++通过 public、protected、private 三个关键字来控制成员变ᰁ和成员函数的访问权限,它
们分别表示公有的、受保护的、私有的,被称为成员访问限定符。
- 继承
让某种类型对象获得另⼀个类型对象的属性和⽅法
它可以使⽤现有类的所有功能,并在⽆需᯿新编写原来的类的情况下对这些功能进⾏扩展
继承的三种方式
1、实现继承:指使⽤基类的属性和⽅法⽽⽆需额外编码的能⼒
2、接⼝继承:指仅使⽤属性和⽅法的名称、但是⼦类必须提供实现的能⼒
3、可视继承:指⼦窗体(类)使⽤基窗体(类)的外观和实现代码的能⼒ - 封装
数据和代码捆绑在⼀起,避免外界⼲扰和不确定性访问; - 多态
同⼀事物表现出不同事物的能⼒,即向不同对象发送同⼀消息,不同的对象在接收时会产⽣不
同的⾏为(重载实现编译时多态,虚函数实现运⾏时多态)
允许将⼦类类型的指针赋值给⽗类类型的指针。
智能指针
标准模板库STL
容器
pair
swap,sort,length,size
vector: push_back,pop_back