枚举类 :从零开始
extern : C++支持 分离式编译 将声明与定义分离: 如果想声明一个变量而非定义它,则使用extern关键字,且不能显示地初始化。一般全局函数和全局变量并不会被使用(也不允许)
那么怎么给extern 的变量赋值呢?自己决定,变量只能定义一次,但是可以声明多次:
当你在某个文件中写了 extern int c 时,c已经在某处定义过了,你只是声明,而不是定义。
声明后,你也就可以在这个文件中使用变量c了
预定义(#include) 与 头文件保护符(#ifndef,#define,#endif)
.h 和 .cpp的理解:
头文件一般包含那些智能 被定义一次的实体(类,const, constexpr)
头文件(.h)用来声明, 源文件(eg. XXX.cpp要#include "XXX.h")用来定义
而名字相同的.h 和 .cpp 称作一个package
使用的时候只需要#include "XXX.h"而不用#include .cpp
inline限定符:用inline修饰一个函数a后,当调用到a的时候,编译器在编译时会直接展开,而不是像调用普通函数一样生成一个栈帧,能够提高代码效率,但是只适用于短代码
void* 指针 : 它可以存放任意类型的地址,但是我们并不知道这个地址是什么类型,所以无法访问这个地址的对象
可以使用 static_cast 强制转换void*成别的类型指针
void* p = &d;
eg: double dp* = static_cast
static_cast:强制类型转化, 一般情况下,把一个较大的算数类型赋值给较小的类型的时候,编译器会出现warning,但是, 使用static_cast 后,就不会报错,相当于显式地告诉编译器,我们不在乎这部分精度损失
new与delete :调用构造函数(XXX)与析构函数(~XXX)
malloc 和 free
继承的好处:易扩展。避免代码冗余
继承中的构造与析构函数:
不论怎么继承,static静态成员始终只有一个
重载与重写:
重载: 拥有同名但不同参数列表(参数类型,顺序,个数) 的 函数
重写: 继承基类,覆盖基类的虚函数,后面加一个override
重写反映了C++的多态性,体现在面向对象中,但是重载不止出现在类中,其他地方也可以出现
重载的概念出现在同一个作用域中,无法以返回值区分两个函数
有人说,不要对继承下来的成员函数进行重载,但是可以对继承下来的函数进行重载
虚函数与纯虚函数:
虚函数没有一定要求重写,但是纯虚函数一定要重写 ,且含有纯虚函数的类叫抽象类,抽象类不能被实例化。
编译过程:
C++内存模型:
静态:
静态函数只能使用静态变量
const函数可以使用非const变量吗:
可以 ,const加在后面的函数(类中)叫做常成员函数,可以使用该类的所有成员,但是不能做任何修改
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)