C++ 语法干货 1-变量、函数、类、结构
1.变量
1.1程序占用的内存分布共有5部分
1、栈 : 分配,编译器
2、堆 :分配,程序员; new delete ,malloc(sizeof ) free()
3、全局区+static :初始化 在一块区域,未初始化另一块区域。系统释放。
4、 常量区:系统释放
5、代码区:
1.2变量、指针、引用
变量:值;指针:地址;引用:别名。
1.3数组、链表、容器、迭代器
数组:连续地址;链表:不连续地址;容器:动态数组;迭代器:游标。
vector : 动态数组
map:key value 不重复
set :key value 可重复
1.4 const #define
const 常量
#define 预编译前 无数据类型 字符替换
1.5深拷贝、浅拷贝
浅: 内容 char p1[]="hello" ; char *p2=p1
深 : 内容+地址 char p1[]="hello"; char *p2= new char[]; p2=p1;
1.6 const static extern
extern 变量函数定义在别处
static 静态区 ,不是栈
1.7 静态与全局区别
静态:初始化一次 同一个源文件无区别
全局: 多个文件,全局只在本文件中。
2.函数、类、结构
2.1构造、析构
构造函数:“先基后派”;
析构函数:“先派后基”。
析构:防止内存泄漏
2.2多态、虚函数、纯虚函数
多态:父 ->A1 B1 C1 子类的同名函数 A1->print()都是子类
虚函数:virtual double A();{}有实现 为了动态绑定
纯虚函数: virtual double B()=0; 无实现 为了派生接口
2.3 重写、重载、覆盖 同函数名
2.3.1Overload(重载):但参数或返回值不同(包括类型、顺序不同)
(1)(同一类中);(2)函数名字相同;(3)参数不同;(4)virtual 可有可无。
2.3.2Override(覆盖或重写):
(1)(派生类、基类);(2)函数名字相同; (3)参数相同; (4)必有virtual
2.3.3 Overwrite(重写):隐藏,是指派生类的函数屏蔽了与其同名的基类函数。(派生类、基类)
(1)同名,异参,不论有无virtual,基类被隐藏(注意别与重载混淆)。
(2)同名,同参,基类无virtual。此时,基类被隐藏(注意别与覆盖混淆)。
2.4 内联函数 宏
inline int max(int a,int b){return a>b?a:b;}
调用 cout<<(a>b?a:b)<<end;
内联函数 宏 应用于调用次数比较多的情况。内联函数消除函数开销。
2.5 size of strlen 区别
str[20]="0123456789";
int a=strlen(str);//10
int b=sizeof(str);//20
2.6 struct class
struct 封装不同类型
class 函数 变量
class是private,struct是public

浙公网安备 33010602011771号