c++面向对象
操作流
1 |
对象
成员函数与全局函数
成员函数的传递默认参数this
reference
const function和function const
return reference
构造函数
复合:由内到外
析构函数
复合:由外到内
拷贝构造
拷贝赋值
含有指针的赋值,希望可以拷贝一份(深拷贝),而不是指向同一块内存区域(浅拷贝)
深拷贝:b=a;将a中的内容复制一份
浅拷贝:b=1;将b指向a的内容
实例
实例的创建方式
实例的生存周期
临时对象
语法:typename()
1 | class complex; |
using
关键字用于定义类型别名
1 | using Ptr = std::shared_ptr<MediaSession>;//智能指针取别名 |
堆和栈
local:stack
static:程序结束释放
global:不在函数内部
static和global的区别
作用域
生命周期
堆区的对象(auto/local)离开作用域消失
静态数据
静态成员函数:静态函数没有this指针,不能去访问对象数据,只能处理对象的静态数据
1 | class Account |
调用静态函数
object调用
1
2Account a;
a.set_rate(0.1);class name调用
1
Account::set_rate(0.1)
static的运用
只存在一个,不想再创建,外界只能通过getInstance获取实例,A::getInstance.setup();
1 | class A{ |
上面这个做法,如何用户是否调用A的实例,A的实例都会创建
1 | class A{ |
动态内存分类
new
和free
new的过程
- 申请内存
- 类型转化
- 调用构造函数
new返回的是指针,调用的是malloc
free使用的是free
free的过程
- 调用析构函数
- 释放内存
new[ ]和delete[ ]
命名空间
防止命名冲突
1 | namespace std{ |
1 | using namespace std; |
复合
1 | class a; |
a的实例由编译器自动创建
委托
1 | class a; |
a的实例由开发者动态创建
继承
1 | struct list_node:public _list_node_base |
虚函数
虚函数和子类的复写有关
non-virtual:不复写
虚函数virtual function:可以override,父类有默认的定义
纯虚函数pree virtual function:一定要override,父类没有默认的定义
1 |
多态
模板
类模板
1 | typlate<classname T> |
函数模板
1 | template<class T> |
智能指针
unique_ptr
初始化
1 | Perple p1=new People(); |
1 | unique_ptr<People> uni_ptr(new People());//c14标准 |
1 | unique_ptr<People> uni_ptr=make_nique<People>(); |
特点:不允许拷贝构造和复制函数,在函数传递中可以使用引用,但不能传递值
标准库
vector
pop
push
forward_list
1 | std::string multicast_ip_; |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 xiao's blog!