08 2016 档案
摘要:本篇文章在上一篇文章的基础上进一步介绍一些常用的容器以及STL的一些深入知识。 一、 Stack和Queue 栈和队列是非常常用的两种数据结构,由deque适配而来。关于数据结构的知识这里就不在介绍了,仅介绍STL中的成员方法。 stack 的基本操作有:入栈,如例:s.push(x);出栈,如例:s.pop();注意,出栈操作只是删除栈顶元素,并不返回该元素。访问栈顶,如例:s.top()判断栈...
阅读全文
摘要:在C++语法的学习过程中,我们已经对模板有了基本的了解。泛型编程就是以模板为工具的、泛化的编程思想。本篇文章介绍了一些在之前的文章中没有涉及到的一些模板知识、泛型编程知识和几种容器。关于模板的一些重复知识在这里就不再进行赘述。 一、关于模板的知识点补充 1. 函数模板的参数推导与显式指定 通常情况下,我们一般采用参数的自动推导方式去使用函数模板。在自动推导时,为了确保推导的正确性,C++不允许...
阅读全文
摘要:本篇笔记主要分为两个主要部分,第一部分关于对象模型,第二部分是关于new和delete的更加深入的学习。 一、对象模型 关于vptr(虚指针)和vtbl(虚函数表) 只要用到了虚函数,对象中就会多一个指向虚函数表的虚指针。在32位环境下,将占4Bytes的空间。 在vtbl中,每一项都是指向自己类应
阅读全文
摘要:一、类型转换 class Fraction { public: explicit Fraction(int num, int den=1) : m_numerator(num), m_denominator(den) { cout << m_numerator << ' ' << m_denomin
阅读全文
摘要:以Fruit和Apple为例进行分析: Fruit和Apple的定义如下: 通过在两种编译环境下的测试(GNU GCC & VS2015),可以发现这两种编译器的对象模型是一样的,如下图所示: Apple是Fruit的子类,此为两级的单链继承结构。在Apple和Fruit对象内部,均遵循以下原则:
阅读全文

浙公网安备 33010602011771号