CPP
随心小记
这个作者很懒,什么都没留下…
展开
-
二阶构造
避免半成品对象:初始化操作不能按预期完成而得到对象工程开发中的构造过程可分为 - 资源无关的初始化操作 - 使用系统资源的操作(内存申请,访问文件)class TwoPhaseCons{ private: TwoPhaseCons() { //第一阶段构造 } bool Constr转载 2017-05-30 11:22:38 · 265 阅读 · 0 评论 -
vector
vector是C++标准模板库的部分内容,它是一个多功能的,能够操作多种数据结构和算法的模板类和函数库简单地说,vector就是一个能够存放任意类型的动态数组转载 2017-06-07 10:38:58 · 170 阅读 · 0 评论 -
动态类型获取
typeid关键字,用于获取类型信息 typeid返回一个type_info类对象const type_info& tiv = typeid(int);当参数是类型时,返回静态类型信息 当参数是变量时:不存在虚函数表,返回静态类型信息存在虚函数表,返回动态类型信息C++编译器匹配调用优先级重载函数函数模板变参函数转载 2017-06-06 16:39:42 · 378 阅读 · 0 评论 -
异常
异常:是运行时可预料的执行分支 bug:是程序的错误,是不可预期的运行方式try语句处理正常代码逻辑 catch语句处理异常情况 try语句中的异常由对应的catch语句处理 throw抛出的异常必须被catch处理不同类型的异常由不同的catch语句负责处理 catch(…)用于处理所有类型的异常 任何异常只能被捕获一次异常处理匹配时,不进行任何类型的转换匹配子类异常的catch放在上转载 2017-06-06 16:29:06 · 259 阅读 · 0 评论 -
单例模式
某些类在整个系统生命周期中最多只能有一个对象存在要想控制类的对象数目,必须对外隐藏构造函数将构造函数访问等级设为private定义instance变量并初始化为NULL当需要创建对象时,访问instance的值空值:创建对象,并用instance标记非空值:返回instance标记的对象转载 2017-06-06 16:12:56 · 163 阅读 · 0 评论 -
泛型编程
不考虑具体数据类型的编程方式void sw(T& a,T& b){ T c = a; a = b; b = c;}template sw(a, b); sw(a, b);函数模板可以像普通函数一样被重载编译器优先考虑普通函数如果函数模板可以产生一个更好的匹配,那么选择模板可以通过空模板实参列表限定编译器只匹配模板int r1 = MAX(1,2);double转载 2017-06-06 16:08:29 · 153 阅读 · 0 评论 -
抽象类和接口
c++没有抽象类,通过纯虚函数实现抽象类 - 是一种只能定义类型,而不能产生对象的类 - 只能被继承并重写相关函数 - 只能用作父类被继承 - 子类必须实现纯虚函数的具体功能 - 纯虚函数被实现后成为虚函数 - 如果子类没有实现纯虚函数,则子类为抽象类纯虚函数是指只定义原型的成员函数接口:类中没有定义任何成员变量所有的成员函数都是公有的所有的成员函数都是纯虚函数接口是一种特殊的抽转载 2017-06-06 15:38:33 · 146 阅读 · 0 评论 -
多态
父类中被重写的函数依然会继承给子类 子类中重写的函数将覆盖父类中的函数 通过作用域分辨符(::)可以访问到父类中的函数面向对象中期望的行为 - 根据实际的对象类型判断如何调用重写函数 - 父类指针(引用)指向 - 父类对象则调用父类中定义的函数 - 子类对象则调用子类中定义的重写函数 多态的概念 - 根据实际的对象类型决定函数调用转载 2017-05-30 23:30:08 · 131 阅读 · 0 评论 -
继承
有继承关系时才考虑protected子类可以定义构造函数 - 必须对继承而来的成员进行初始化 - 直接通过初始化列表或赋值的方式进行初始化 - 调用父类构造函数初始化子类对象在创建时会首先调用父类的构造函数,然后调用成员变量的构造函数,最后是自身的构造函数转载 2017-05-30 22:59:22 · 149 阅读 · 0 评论 -
类型转换函数
static_cast - 用于基本类型的转换 - 不能用于基本类型指针间的转换 - 用于有继承关系类对象之间的转换和类指针之间的转换const_cast - 用于去除变量(类对象)的只读属性 - 强制转换的目标类型必须是指针或引用reinterpret_ cast - 用于指针类型间的转换 - 用于整数和指针类型间的强制转换d转载 2017-05-30 16:20:59 · 360 阅读 · 0 评论 -
智能指针
重载指针特征操作符(->和*) 只能通过类的成员函数重载 重载函数不能使用参数 只能定义一个重载函数用类的对象模拟指针的行为class Test{ int i;public: Test(int i) { this->i = i; } int value() { return i; } ~T转载 2017-05-30 15:04:19 · 183 阅读 · 0 评论 -
C++(对象模型分析)
一、运行时的对象退化为结构体的形式所有成员变量在内存中一次排布成员变量可能存在内存空隙可以通过内存地址直接访问成员变量访问权限关键字在运行时失效1、类中的成员函数位于代码段中,成员变量和成员函数在内存中分开存放 2、调用成员函数时对象地址作为参数隐式传递 3、成员函数通过对象地址访问成员变量 4、C++语法规则隐藏了对象地址的传递过程二、C++多态的实现原理当类中...原创 2018-04-10 08:47:14 · 366 阅读 · 0 评论