
C++深度剖析
YLC_慕类
知行合一
展开
-
C++11和Boost
2013年10月11日18:05由Jens Weller发表C++11中的标准库的某些部分是在Boost中先于标准库的。在玩C++11时,您会习惯于使用标准库中的一些部件,这些部件在C++03中与它们的Boost对应部分一起使用。此外,现在也出现了一些基于C++11的库,因此与Boost或C++11代码的接口很快就成为一个问题。Boost已经在C++03中使用多年了,所以使用C++11中的Boost版本是很自然的选择,这些版本现在是STD::,以便能够与C++03进行接口。但也有一些人会很乐意使用C++翻译 2020-09-01 17:10:40 · 1625 阅读 · 0 评论 -
面试题+强制类型转换(int)、(int&)和(int*)知识分析
题目:#include <iostream>#include <stdio.h>#include <string.h>using namespace std;int main() { float a =1.0f; cout << (int)a << endl; cout << &a << endl; cout << (int&)a << endl; co原创 2020-08-14 21:15:13 · 1071 阅读 · 1 评论 -
C++笔记 第六十二课 单例类模板---狄泰学院
如果在阅读过程中发现有错误,望评论指正,希望大家一起学习,一起进步。学习C++编译环境:Linux第六十二课 单例类模板1.单例模式需求的提出在构造设计时,某些类在整个系统生命期中最多只能有一个对象存在(Single Instance).2.问题如何定义一个类,使得这个类最多只能创建一个对象?单例模式3.单例模式要控制类的对象数目,必须对外隐藏构造函数思路:将构造函数的访问属...原创 2018-11-30 14:33:12 · 240 阅读 · 0 评论 -
C++笔记 第六十三课 C语言异常处理---狄泰学院
如果在阅读过程中发现有错误,望评论指正,希望大家一起学习,一起进步。学习C++编译环境:Linux第六十三课 C语言异常处理1.异常处理异常的概念程序在运行过程中可能产生异常异常(Exception)与Bug的区别异常是程序运行时可预料的执行分支Bug是程序中的错误,是不被预期的运行方式异常(Exception)与Bug的对比:异常:运行时产生除0的情况需要打开的外部文件不...原创 2018-11-30 14:35:35 · 394 阅读 · 0 评论 -
C++笔记 第六十四课 C++中的异常处理(上)---狄泰学院
如果在阅读过程中发现有错误,望评论指正,希望大家一起学习,一起进步。学习C++编译环境:Linux第六十四课 C++中的异常处理(上)1.C++异常处理C++内置了异常处理的语法元素try…catch…try语句处理正常代码逻辑catch语句处理异常情况try语句中的异常由对应的catch语句处理C++通过throw语句抛出异常信息C++异常处理分析throw抛出的异常必须...原创 2018-11-30 14:38:38 · 240 阅读 · 0 评论 -
C++笔记 第六十五课 C++中的异常处理(下)---狄泰学院
如果在阅读过程中发现有错误,望评论指正,希望大家一起学习,一起进步。学习C++编译环境:Linux第六十五课 C++中的异常处理(下)1.C++中的异常处理catch语句块中可以抛出异常2.问题为什么要在catch中重新抛出异常?3.C++中的异常处理catch中捕获的异常可以被重新解释后抛出工程开发中使用这样的方式统一异常类型65-1 异常的重新解释假设:当前的函数式第...原创 2018-11-30 14:43:07 · 269 阅读 · 0 评论 -
C++笔记 第五十课 C++对象模型分析(上)---狄泰学院
如果在阅读过程中发现有错误,望评论指正,希望大家一起学习,一起进步。学习C++编译环境:Linux第五十课 C++对象模型分析(上)1.回归本质class是一种特殊的struct在内存中class依旧可以看做变量的集合class与struct遵循相同的内存对齐规则class中的成员函数与成员变量是分开存放的每个对象由独立的成员变量所有对象共享类中的成员函数值得思考的问题50...原创 2018-11-29 20:44:31 · 241 阅读 · 0 评论 -
C++笔记 第六十六课 C++中的类型识别(新内容的最后一课)---狄泰学院
如果在阅读过程中发现有错误,望评论指正,希望大家一起学习,一起进步。学习C++编译环境:Linux第六十六课 C++中的类型识别(新内容的最后一课)1.类型识别在面向对象中可能出现下面的情况基类指针指向子类对象基类引用成为子类对象的别名静态类型-变量(对象)自身的类型动态类型-指针(引用)所指向的对象的实际类型基类指针是否可以强制类型转换为子类指针取决于动态类型!2.C++...原创 2018-12-01 09:26:57 · 196 阅读 · 0 评论 -
新手、小白学习 Github上的C++开源项目
http://blog.youkuaiyun.com/fyifei0558/article/details/47001677http://www.zhihu.com/question/28341521有人吐槽怎么下手FreeNOS,上文档 FreeNOS: FreeNOS Documentation--更新--把平时关注的一些c++相关的github的project列下,欢迎补充。FreeNOS...转载 2018-12-01 09:30:10 · 17931 阅读 · 1 评论 -
C++笔记 第四十五课 不同的继承方式---狄泰学院
如果在阅读过程中发现有错误,望评论指正,希望大家一起学习,一起进步。学习C++编译环境:Linux第四十五课 不同的继承方式1.被忽略的细节冒号(:)表示继承关系,parent表示被继承的类,public的意义是什么?2.有趣的问题是否可以将继承语句中的public换成protected或者private?如果可以,与public继承有什么区别?45-1 有趣的尝试—可以运行#i...原创 2018-11-27 21:23:21 · 212 阅读 · 0 评论 -
C++笔记 第四十六课 继承中的构造与析构---狄泰学院
如果在阅读过程中发现有错误,望评论指正,希望大家一起学习,一起进步。学习C++编译环境:Linux第四十六课 继承中的构造与析构1.思考如何初始化父类成员?父类构造函数和子类构造函数有什么关系?2.子类对象的构造子类中可以定义构造函数子类构造函数必须对继承而来的成员进行初始化直接通过初始化列表或者赋值的方式进行初始调用父类构造函数进行初始化父类构造函数在子类中的调用方式默认...原创 2018-11-27 21:28:42 · 240 阅读 · 0 评论 -
C++笔记 第六十一课 智能指针类模板---狄泰学院
如果在阅读过程中发现有错误,望评论指正,希望大家一起学习,一起进步。学习C++编译环境:Linux第六十一课 智能指针类模板1.智能指针智能指针的意义现代C++开发库中最重要的类模板之一C++中自动内存管理的主要手段能够在很大程度上避开内存相关的问题STL中的智能指针auto_ptr生命周期结束时,销毁所指的内存空间不能指向堆数组,只能指向堆对象(变量)一片堆空间只属于一个智...原创 2018-11-30 14:30:56 · 251 阅读 · 0 评论 -
C++笔记 第六十课 数组类模板---狄泰学院
如果在阅读过程中发现有错误,望评论指正,希望大家一起学习,一起进步。学习C++编译环境:Linux第六十课 数组类模板1.预备知识模板参数可以是数值型参数(非类型参数)数值型模板参数的限制变量不能作为模板参数浮点数不能作为模板参数类对象不能作为模板参数。。。本质:模板参数是在编译阶段被处理的单元,因此,在编译阶段必须准确无误的唯一确定。2.有趣的面试题用你觉得最高效的方法...原创 2018-11-30 14:25:37 · 227 阅读 · 0 评论 -
C++笔记 第五十一课 C++对象模型分析(下)---狄泰学院
如果在阅读过程中发现有错误,望评论指正,希望大家一起学习,一起进步。学习C++编译环境:Linux第五十一课 C++对象模型分析(下)1.继承对象模型在C++编译器的内部类可以理解为结构体子类是由父类成员叠加子类新成员得到的51-1 继承对象模型初探#include <iostream>#include <string>using namespace s...原创 2018-11-29 20:57:10 · 233 阅读 · 0 评论 -
C++笔记 第五十二课 C++中的抽象类和接口---狄泰学院
如果在阅读过程中发现有错误,望评论指正,希望大家一起学习,一起进步。学习C++编译环境:Linux第五十二课 C++中的抽象类和接口1.什么是抽象类?面向对象中的抽象概念在进行面向对象分析时,会发现一些抽象的概念!图形的面积如何计算?在现实中需要知道具体的图形类型才能求面积,所以对概念上的“图形”求面积是没有意义的!Shape只是一个概念上的类型,没有具体对象!2.问题Sha...原创 2018-11-29 21:03:17 · 209 阅读 · 0 评论 -
C++笔记 第五十三课 被遗弃的多重继承(上)---狄泰学院
如果在阅读过程中发现有错误,望评论指正,希望大家一起学习,一起进步。学习C++编译环境:Linux第五十三课 被遗弃的多重继承(上)1.问题C++中是否允许一个类继承自多个父类?允许2.C++支持编写多重继承的代码一个子类可以拥有多个父类子类拥有父类的成员变量子类继承所有父类的成员函数子类对象可以当做任意父类对象使用多重继承的语法规则多重继承的本质与单继承相同!53-1...原创 2018-11-29 21:06:44 · 241 阅读 · 2 评论 -
C++笔记 第五十四课 被遗弃的多重继承(下)---狄泰学院
如果在阅读过程中发现有错误,望评论指正,希望大家一起学习,一起进步。学习C++编译环境:Linux第五十四课 被遗弃的多重继承(下)1.多重继承的问题三多重继承可能产生多个虚函数表54-1 多重继承问题三#include <iostream>#include <string>using namespace std;class BaseA{public...原创 2018-11-29 21:09:43 · 263 阅读 · 0 评论 -
C++笔记 第五十五课 经典问题解析四---狄泰学院
如果在阅读过程中发现有错误,望评论指正,希望大家一起学习,一起进步。学习C++编译环境:Linux第五十五课 经典问题解析四1.关于动态内存分配new和malloc的区别是什么?delete和free的区别是什么?new关键字与malloc函数的区别new关键字是C++的一部分malloc是由C库提供的函数new以具体类型为单位进行内存分配malloc以字节为单位进行内存分配...原创 2018-11-29 21:13:01 · 266 阅读 · 0 评论 -
C++笔记 第五十六课 函数模板的概念和意义---狄泰学院
如果在阅读过程中发现有错误,望评论指正,希望大家一起学习,一起进步。学习C++编译环境:Linux第五十六课 函数模板的概念和意义1.发散性问题C++中有几种交换变量的方法?2.交换变量的方法定义宏代码块VS定义函数56-1 变量的交换#include <iostream>#include<string>using namespace std;#def...原创 2018-11-30 14:10:21 · 170 阅读 · 0 评论 -
C++笔记 第五十七课 深入理解函数模板---狄泰学院
如果在阅读过程中发现有错误,望评论指正,希望大家一起学习,一起进步。学习C++编译环境:Linux第五十七课 深入理解函数模板1.函数模板函数模板深入理解编译器从函数模板通过具体类型产生不同的函数编译器会对函数模板进行两次编译对模板代码本身进行编译对参数替换后的代码进行编译注意事项:函数模板本身不允许隐式类型转换自动推导类型时,必须严格匹配显示类型指定时,能够进行隐式类型转...原创 2018-11-30 14:13:26 · 226 阅读 · 0 评论 -
C++笔记 第五十八课 类模板的概念和意义---狄泰学院
如果在阅读过程中发现有错误,望评论指正,希望大家一起学习,一起进步。学习C++编译环境:Linux第五十八课 类模板的概念和意义1.思考在C++中是否能够将泛型的思想应用于类?2.类模板一些类主要用于存储和组织数据元素类中数据组织的方式和数据元素的具体类型无关如:数组类,链表类,Stack类,Queue类,等C++中将模板的思想应用于类,使得类的实现不关注数据元素的具体类型,而只...原创 2018-11-30 14:15:52 · 169 阅读 · 0 评论 -
C++笔记 第五十九课 类模板深度剖析---狄泰学院
如果在阅读过程中发现有错误,望评论指正,希望大家一起学习,一起进步。学习C++编译环境:Linux第五十九课 类模板深度剖析1.多参数类模板类模板可以定义任意多个不同的类型参数类模板可以被特化指定类模板的特定实现部分类型参数必须显示指定根据类型参数分开实现类模板类模板的特化类型部分特化-用特定规则约数类型参数完全特化-完全显示指定类型参数59-1 类模板的特化—重点程...原创 2018-11-30 14:19:44 · 273 阅读 · 0 评论 -
C++笔记 第四十七课 父子间的冲突---狄泰学院
如果在阅读过程中发现有错误,望评论指正,希望大家一起学习,一起进步。学习C++编译环境:Linux第四十七课 父子间的冲突1.思考子类中是否可以定义父类中的同名成员?如果可以,如何区分?如果不可以,为什么?47-1 同名成员变量#include<iostream>#include<string>using namespace std;class Paren...原创 2018-11-27 21:59:25 · 258 阅读 · 0 评论 -
C++笔记 外传篇1 异常处理深度解析
外传篇1 异常处理深度解析1.异常处理深度解析问题:如果在main函数中抛出异常会发生什么?会被最终的全局函数处理掉,c++编译器之间存在差异如果异常不处理,最后会传到哪里?E1-1 异常的最终处理?#include <iostream>using namespace std;class Test {public: Test() { ...原创 2018-12-01 10:08:03 · 282 阅读 · 0 评论 -
赋值操作符的优化步骤分解
T* copy(T* array, int len, int newlen) { T* ret = new T[newlen]; if( ret != NULL ) { int size = (len < newlen) ? len : newlen; for(int i=0;...原创 2019-04-09 16:08:58 · 184 阅读 · 0 评论 -
c++线程中的几种锁
c++线程中的几种锁这个是在中兴面试中被面试问到的一个题“你知道线程中的自旋锁么?”,我当时一脸懵逼,不知道。回来后整理下,在这里对线程中的锁进行一个学习。线程之间的锁有:互斥锁、条件锁、自旋锁、读写锁、递归锁。一般而言,锁的功能越强大,性能就会越低。1、互斥锁互斥锁用于控制多个线程对他们之间共享资源互斥访问的一个信号量。也就...转载 2019-06-12 19:25:50 · 725 阅读 · 0 评论 -
C++需要看的书
最近发现在学习C++的时候,有些书算是必读的,所以总结了一下。 作为想要入坑互联网的小白来说,不管在打基础阶段还是之后能力提升的阶段,都强烈推荐学习下计算机专业本科时候的基础课,不是说完全学会的程度,但是必须做到比如重点章节还是要细细琢磨的。 我也不是科班出身,所以都是在图书馆找这些书,然后大致看一遍,...原创 2019-06-13 23:04:40 · 821 阅读 · 0 评论 -
虚函数表存储位置
原 虚函数表放在哪里? 2007年01月28日 14:09:00 houdy 阅读数 15329 ...转载 2019-06-17 13:59:30 · 2924 阅读 · 0 评论 -
static与非static成员(函数)
static与非static成员(函数) 《C++ Primer》第4版399页:对于特定类类型的全体对象而言,访问一个全局变量有时是必要的。然而,全局变量会破坏封装:对象需要支持特定类抽象的实现。如果对象是全局的,一般的用户代码就可以修改这个值。鉴于此,类可以定义 类静态成员,而不是定义一个可普遍访问的全局对象。 通常,非static数据成员存在于类类型的每个对象...转载 2019-06-25 15:57:37 · 750 阅读 · 0 评论 -
const常量与宏定义区别
const常量与宏定义区别 1,转载地址:http://blog.sina.com.cn/s/blog_60d6fadc01012i52.html(1) 编译器处理方式不同 define宏...转载 2019-06-25 16:02:10 · 2276 阅读 · 0 评论 -
排序算法之 二分法排序
原 排序算法之 二分法排序 2018年08月08日 22:44:59 love_yqy 阅读数 3926 ...转载 2019-06-17 23:12:31 · 2373 阅读 · 0 评论 -
C++ vector用法(详解!!函数,实现)
1,简述一下vector的基本操作,它的size,capacity()clear,reverse,reserve, push_back等!!!2,说说,vector的存储特性,是顺序存储还是如同链表般,如果是顺序存储的话,那么是如何执行 erase,insert等函数,???(假如后面的空间不够的话,我们需要合理的算法来重新找出一块 相应的空间吗???拷贝,回收吗???是不是特别麻烦...转载 2019-06-24 20:18:54 · 43707 阅读 · 3 评论 -
链表头结点类型需要重定义
mutable struct { char reserved[sizeof(T)]; Node* next; }m_header; int m_length; ```原创 2019-04-10 11:19:59 · 389 阅读 · 0 评论 -
对c++ public、protected、private关键字的理解
对c++ public、protected、private关键字的理解首先要明确一下:1.这三个关键字在两种地方会用到,一个是对类的成员变量和成员函数修饰时(比如私有的成员变量,受保护的成员变量·,公有的函数),还有一种是对继承方式的修饰(比如公有继承,保护继承)。2.这三个关键字在对成员变量或成员函数修饰时表示外部(与内部相对,若一个类包括一个.h文件和.cpp文件,出了这两个文件就是外部...转载 2019-03-07 16:10:29 · 402 阅读 · 0 评论 -
error:terminate called after throwing an instance of 'char'
C++析构函数异常zhuan http://blog.etrnls.net/2008/06/03/cpp_destructor_exception/#more-72C++标准中说可以假定析构函数不抛出异常,而如果特定情况下析构函数抛出异常将自动调用terminate()终止程序。我们来看一下这条“站着说话不腰疼“的假定。首先要明确,C++的异常是和面向对象无缝结合的,自然它要保证异常发生时局...转载 2019-03-06 16:41:24 · 13031 阅读 · 2 评论 -
C++笔记 第六十七课 经典问题分析五---狄泰学院
如果在阅读过程中发现有错误,望评论指正,希望大家一起学习,一起进步。学习C++编译环境:Linux第六十七课 经典问题分析五1.面试问题编写程序判断一个变量是不是指针。2.指针的判别拾遗C++中仍然支持C语音中的可变参数函数C++编译器的匹配调用优先级1.重载函数(普通函数)2.函数模板3.变参函数思路将变量分为两类:指针VS非指针编写函数:指针变量调用时返回true...原创 2018-12-01 09:54:12 · 251 阅读 · 0 评论 -
C++笔记 第六十八课 拾遗:令人迷惑的写法---狄泰学院
如果在阅读过程中发现有错误,望评论指正,希望大家一起学习,一起进步。学习C++编译环境:Linux第六十八课 拾遗:令人迷惑的写法1.下面的程序想要表达什么意思?历史上的原因早期的C++直接复用class关键字来定义模板但是泛型编程针对的不只是类类型class关键字的复用使得代码出现二义性typename诞生的直接诱因自定义类类型内部的嵌套类型不同类中的同一个标识符可能导致二...原创 2018-12-01 09:57:35 · 215 阅读 · 0 评论 -
C++笔记 第六十九课 技巧:自定义内存管理---狄泰学院
如果在阅读过程中发现有错误,望评论指正,希望大家一起学习,一起进步。学习C++编译环境:Linux第六十九课 技巧:自定义内存管理1.笔试题统计对象中某个成员变量的访问次数(包含读次数和写次数)2.遗失的关键字mutable是为了突破const函数的限制而设计的mutable成员变量将永远处于可改变的状态mutable在实际的项目开发中被严禁滥用mutable的深入分析muta...原创 2018-12-01 10:01:53 · 337 阅读 · 0 评论 -
C++笔记 第七十课 展望:未来的学习之路---狄泰学院
第七十课 展望:未来的学习之路1.未来的学习之路本课程学习的是“经典”C++语言“经典”指的是什么?C++98/03标准在实际工程中的常用特性大多数企业的产品开发中需要使用的C++技能横向学习纵向学习平台开发学习课程总结C++语言的学习需要重点在于一下几个方面c语言到C++的改进有哪些?面向对象的核心是什么?操作符重载的本质是什么?模板的核心意义是什么?异常处理...原创 2018-12-01 10:04:38 · 378 阅读 · 0 评论 -
C++笔记 外传篇2 函数的异常规格说明(C++中的高级主题)
外传篇2 函数的异常规格说明(C++中的高级主题)1.问题如何判断一个函数是否会抛出异常,以及抛出哪些异常?C++提供语法用于声明函数所抛出的异常异常说明作为函数声明的修饰符,卸载参数列表后面异常规格说明的意义提示函数调用者必须做好异常处理的准备提示函数的维护者不要抛出其他异常异常规格说明是函数接口的一部分2.问题如果抛出的异常不在声明列表中,会发生什么?E2-1.cpp...原创 2018-12-01 10:12:38 · 204 阅读 · 0 评论