为了能到远方,脚下的每一步都不能少.|

lgc202

园龄:8年10个月粉丝:61关注:12

随笔分类 -  c++深度解析

第六十九课、自定义内存管理
摘要:一、统计对象中某个成员变量的访问次数 解决方法一: #include <iostream> using namespace std; class Test { private: int i; mutable int m_count; public: Test(int v) { i = v; m_co
480
0
0
第六十八课、拾遗:令人迷惑的写法
摘要:一、 typename的前世今生 1、定义模板时使用class的历史原因 (1)、早期的C++直接复用class关键字来定义模板 (2)、但是泛型编程针对的不只是类类型 (3)、class关键字的复用使得代码出现二义性 2、typename诞生的直接诱因 (1)、自定义类类型内部的嵌套类型 (2)、
365
0
0
第六十七课、经典问题解析五
摘要:一、问题一:编写一个函数判断一个变量是不是指针 1、拾遗 (1)、c++中仍然支持C语言中的可变参数函数 (2)、c++编译器的匹配调用优先级:重载函数 >函数模板 >变参函数 2、思路 (1)、将变量分为两类:指针VS非指针 (2)、编写函数 A、指针变量调用返回true B、非指针变量调用时返回
404
0
0
第六十六课、c++中的类型识别
摘要:一、类型识别 1、在面向对象中可能出现下面的问题 (1)、基类指针指向子类对象 (2)、基类引用成为子类对象的别名 A、静态类型: 变量(对象)自身的类型(期望的、确定的类型) B、动态类型: 指针(引用)所指向实际对象的类型 2、解决方案 (1)、在类中定义虚函数返回具体类型的信息 (2)、所有的
276
0
0
第六十五课、c++中的异常处理(下)
摘要:一、catch语句中可以抛出异常 (1)、catch语句中抛出的异常需要外层的try...catch...捕获 (1)、catch中捕获的异常可以被重新解释后抛出 (2)、工程中使用这样的方式统一异常类型 二、类类型中的异常 1、异常的类型可以是自定义的类类型 2、对于类类型的异常匹配依旧是自上而下
346
0
0
第六十四课、c++中的异常处理(上)
摘要:一 、c++的异常处理 1、c++内置了异常处理语法元素try...catch (1)、try语句处理正常逻辑代码 (2)、catch处理异常情况 (3)、try语句中的异常由对应的catch语句处理 2、c++通过throw语句抛出异常信息 3、c++异常处理分析 (1)、throw抛出的异常必须
559
1
1
第六十三课、C语言的异常处理
摘要:一、异常处理 1、异常的概念 (1)、程序在运行过程中可能产生异常 (2)、异常(Exception)和Bug的区别 A、异常是程序运行时可预料的执行分支 B、Bug是程序中的错误,是不被预期的运行方式 2、异常(Exception)和Bug的对比 (1)异常 A、运行时产生除0的情况 B、需要打开
2690
0
0
第六十二课、单例类模板
摘要:一、单例模式(一个类只有一个对象,且单例模式一般不用释放) 1、要控制类的对象数目,必须对外隐藏构造函数 (1)、将构造函数的访问属性设置为private (2)、定义instance并初始化为NULL (3)、当需要使用对象时,访问instance的值 A、空值:创建对象,并用instance标记
312
0
0
第六十一课、智能指针类模板
摘要:一、智能指针 1、智能指针的意义 (1)、现代c++开发库中最重要的类模板之一 (2)、c++中自动内存管理的重要手段 (3)、能够很大程度上避开内存相关的问题 2、STL中的只能指针auto_ptr (1)、生命周期结束时,销毁指向的内存空间 (2)、不能指向堆数组(否则发生内存泄漏),只能指向堆
331
0
0
第六十课、数组类模板
摘要:一、数值型参数(类型参数) 1、模板参数可以是数值型参数 2、数值型模板参数的限制 (1)、变量不能作为模板参数 (2)、浮点数不能作为模板参数 (3)、类对象不能作为模板参数 (4)、等等 3、数值型参数的本质 (1)、模板参数是在编译阶段被处理的单元,因此,在编译阶段必须准确无误唯一确定 用数组
390
0
0
第五十九课、类模板的深度剖析
摘要:一、多参数的类模板 1、类模板可以定义任意多个不同类型的参数 2、类模板可以被特化 (1)、指定类模板的特定实现 (2)、部分类型参数必须显示指定(如class Test<T, T> 就是现实指定T) (3)、根据类型参数分开实现类模板(同一个模板根据需要用不同方式来实现而已) (4)、类模板的特化
291
0
0
第五十八课、类模板的概念和意义
摘要:一、类模板概念及应用 1、类模板 (1)、一些类主要用于存储和组织数据 (2)、类中数据组织的方式和数据元素的具体类型无关 (3)、如数组类、链表类、Stack类、Queue类等 (4)、c++将模板的思想应用于类,使得类的实现不关注数据元素的具体类型,而只关注类所需要实现的具体功能 2、c++中的
405
0
0
第五十七课、深入理解函数模板
摘要:一、函数模板深入理解 1、编译器从函数模板通过具体类型产生不同的函数 2、编译器会对函数模板进行两次编译 (1)、对模板代码本身进行编译 (2)、对参数替换后的代码进行编译 3、函数模板本身不允许隐式类型转换 (1)、自动推导类型时,必须严格匹配 (2)、显示类型指定时,能够进行隐式类型转换 函数模
350
0
0
第五十六课、函数模板的概念和意义
摘要:一、交换变量的方法 1、定义宏代码块 (1)、优点:代码复用,适合所有的类型 (2)、缺点:编译器不知道宏在哪,缺少类型检查 2、定义函数 (1)、优点:真正的函数调用,编译器对类型进行检查 (2)、缺点:根据类型重复定义函数,无法代码复用 二、泛型编程与函数模板 1、泛型编程的概念:不考虑具体类型
473
0
0
第五十五课、经典问题解析四
摘要:一、new和malloc、delete和free之间的区别 1、new和malloc (1)、new关键字是c++的一部分 malloc是c库提供的函数 (2)、new是以具体类型为单位分配内存 malloc是以字节为单位分配内存 (3)、new在申请内存空间时可进行初始化 malloc仅根据需要申
288
0
0
第五十四课、被遗弃的多重继承(下)
摘要:一、多继承产生的问题三:可能产生多个虚函数表 二、正确使用多重继承:一些工程的建议 (1)、先继承自一个父类,然后实现多个多个接口 (2)、父类中提供equal()成员函数 (3)、equal()成员函数用于判断指针是否指向当前对象 (4)、与多重继承相关的强制类型转换用dynamic_cast完成
267
0
0
第五十三课、被遗弃的多重继承(上)
摘要:一、c++的多重继承 1、c++支持编写多重继承的代码 (1)、一个子类可以拥有多个父类 (2)、子类拥有所有父类的成员变量 (3)、子类继承所有父类的成员函数 (4)、子类对象可以当做任意父类对象使用 2、多重继承产生的问题一:通过多重继承得到的对象拥有不同的地址 二、多重继承产生的问题二:当多重
308
0
0
第五十二课、c++中的抽象类和接口
摘要:一、c++中的抽象类与纯虚函数 1、面向对象中抽象的概念 (1)、现实中需要知道具体图形的类型才能求面积 (2)、图形类只是概念上的类型,没有具体对象 2、面向对象中的抽象类 (1)、可用于表示现实世界中的抽象概念 (2)、是一种只能定义类型,而不能产生对象的类 (3)、只能被继承并重写相关的函数
770
0
1
第五十一课、c++对象模型分析(下)
摘要:一、继承的本质 1、在c++编译器的内部类可以理解为结构体 2、子类是由父类成员叠加子类新成员得到的 二、多态的本质 1、当类中声明一个虚函数时,编译器会在类中生成一个虚函数表 2、虚函数表是一个存储成员函数地址的数据结构 3、虚函数表是由编译器自动生成与维护的 4、virtual成员函数会被编译器
324
0
0
第五十课、c++对象模型分析(上)
摘要:一、c++对象模型之成员变量 1、class是一种特殊的struct (1)、在内存中class依旧可以看做是变量的集合 (2)、class与struct遵循相同的内存对齐规则 (3)、class中的成员函数和成员变量是分开存储的 A、每个对象有独立的成员变量 B、所有对象共享类中的成员函数 2、运
366
0
0
点击右上角即可分享
微信分享提示
深色
回顶
收起