随笔分类 - C++
摘要:我使用过一个简单的后台服务框架.这个框架上手很容易,我只需要继承一个基类,同时实现,或重写(override)基类声明的几个接口(这些接口声明为虚函数,或者纯虚函数),然后调用基类定义好的run()函数,便可以将框架代码运行起来.run函数做的事情,是依序调用上述的几个接口: 其中收包,解包,回包,
阅读全文
摘要:以良好的方式编写C++ class 假设现在我们要实现一个复数类complex,在类的实现过程中探索良好的编程习惯。 ① Header(头文件)中的防卫式声明 防止头文件的内容被多次包含。 ② 把数据放在private声明下,提供接口访问数据 ③ 不会改变类属性(数据成员)的成员函数,全部加上con
阅读全文
摘要:C++11标准在标准库中为多线程提供了组件,这意味着使用C++编写与平台无关的多线程程序成为可能,而C++程序的可移植性也得到了有力的保证。另外,并发编程可提高应用的性能,这对对性能锱铢必较的C++程序员来说是值得关注的。 1. 何为并发 并发 指的是两个或多个独立的活动在 同一时段 内发生。生活中
阅读全文
摘要:0. 数据结构图文解析系列 |数据结构系列文章| |: | | "数据结构图文解析之:数组、单链表、双链表介绍及C++模板实现" | | "数据结构图文解析之:栈的简介及C++模板实现" | | "数据结构图文解析之:队列详解与C++模板实现" | | "数据结构图文解析之:树的简介及二叉排序树C+
阅读全文
摘要:0. 数据结构图文解析系列 |数据结构系列文章| |: | | "数据结构图文解析之:数组、单链表、双链表介绍及C++模板实现" | | "数据结构图文解析之:栈的简介及C++模板实现" | | "数据结构图文解析之:队列详解与C++模板实现" | | "数据结构图文解析之:树的简介及二叉排序树C+
阅读全文
摘要:0. 数据结构图文解析系列 |数据结构系列文章| |: | | "数据结构图文解析之:数组、单链表、双链表介绍及C++模板实现" | | "数据结构图文解析之:栈的简介及C++模板实现" | | "数据结构图文解析之:队列详解与C++模板实现" | | "数据结构图文解析之:树的简介及二叉排序树C+
阅读全文
摘要:0. 数据结构图文解析系列 |数据结构系列文章| |: | | "数据结构图文解析之:数组、单链表、双链表介绍及C++模板实现" | | "数据结构图文解析之:栈的简介及C++模板实现" | | "数据结构图文解析之:队列详解与C++模板实现" | | "数据结构图文解析之:树的简介及二叉排序树C+
阅读全文
摘要:0. 数据结构图文解析系列 |数据结构系列文章| |: | | "数据结构图文解析之:数组、单链表、双链表介绍及C++模板实现" | | "数据结构图文解析之:栈的简介及C++模板实现" | | "数据结构图文解析之:队列详解与C++模板实现" | | "数据结构图文解析之:树的简介及二叉排序树C+
阅读全文
摘要:0. 数据结构图文解析系列 |数据结构系列文章| |: | | "数据结构图文解析之:数组、单链表、双链表介绍及C++模板实现" | | "数据结构图文解析之:栈的简介及C++模板实现" | | "数据结构图文解析之:队列详解与C++模板实现" | | "数据结构图文解析之:树的简介及二叉排序树C+
阅读全文
摘要:0.前言 本文简单地总结了STL的顺序容器的知识点。文中并不涉及具体的实现技巧,对于细节的东西也没有提及。一来不同的标准库有着不同的实现,二来关于具体实现《STL源码剖析》已经展示得全面细致。所以本文仅仅是对容器基础知识的归纳。至于容器提供的接口与使用实例,建议查取官方文档。文章难免有错漏,希望指出
阅读全文
摘要:前言 几个星期前去面试C++研发的实习岗位,面试官问了个问题: new与malloc有什么区别? 这是个老生常谈的问题。当时我回答new从自由存储区上分配内存,malloc从堆上分配内存;new/delete会调用构造函数/析构函数对对象进行初始化与销毁;operator new/delete可以进
阅读全文
摘要:C++异常机制概述 异常处理是C++的一项语言机制,用于在程序中处理异常事件。异常事件在C++中表示为 异常对象 。异常事件发生时,程序使用throw关键字抛出异常表达式,抛出点称为异常出现点,由操作系统为程序设置当前异常对象,然后执行程序的当前异常处理代码块,在包含了异常出现点的最内层的 try
阅读全文
摘要:前言
今日的C++不再是个单纯的“带类的C”语言,它已经发展成为一个多种次语言所组成的语言集合,其中泛型编程与基于它的STL是C++发展中最为出彩的那部分。在面向对象C++编程中,多态是OO三大特性之一,这种多态称为运行期多态,也称为动态多态;在泛型编程中,多态基于template(模板)的具现化...
阅读全文
摘要:效率问题
对于用户自定义的类型来说,传引用一般要比传值高效。传引用不需要经过对象过程,在《Effective C++》中作者举了个例子: 此刻我们拥有一个派生类对象derive 。对derive传值的结果是共需要进行六次的构造函数的调用:对象本身的构造函数,对象内部数据成员string的构造...
阅读全文
摘要:我们为什么需要智能指针
所谓资源就是,一旦用了它,将来必须还给系统。C++中内存资源的动态分配经由new与delete实现。问题在于,无论是有意无意,我们有时候总会忘记释放内存中的资源。例如delete语句出现在某个循环语句中,而我们的continue或者break却跳过了它的执行;或者是在程序中...
阅读全文
摘要:假设我们有一个基类A,很不幸的,A的析构函数是一个non virtual。同时我们有一个派生类B,它派生自A。
我们定义了一个A类型指针,它指向的实际对象是B: 然后在程序的某处,我们不再需要B了,我们将指针ptr delete掉: 注意new永远要和delete成队出现,除非你使用智能指针...
阅读全文
摘要:C++是个语法特别复杂的语言,在语法分析中时常会出现歧义,例如嵌套模板参数歧义问题: 在有的编译器上会被解析为vector< vector < int vec,也就是把 当成右移操作符了,不过C++11已经解决这个问题了。咋解决的呢,简单地说,编译器把对 的分析延迟到语法分析阶段(原来是在词法分析阶...
阅读全文
摘要:前言 垃圾收集器是一种动态存储分配器,它自动释放程序不再需要的已分配的块,这些块也称为 垃圾 。在程序员看来,垃圾就是不再被引用的对象。自动回收垃圾的过程则称为 垃圾收集(garbage collection) 。在一个支持垃圾收集的语言中,程序显式地申请内存,但从不需要显式的释放它们。垃圾收集器会
阅读全文
摘要:文章也发布在 "听风过境的专栏" “free store” VS “heap” 当我问你C++的内存布局时,你大概会回答: “在C++中,内存区分为5个区,分别是堆、栈、自由存储区、全局/静态存储区、常量存储区”。 如果我接着问你自由存储区与堆有什么区别,你或许这样回答: “malloc在堆上分配的
阅读全文
摘要:信号槽
信号槽是QT中用于对象间通信的一种机制,也是QT的核心机制。在GUI编程中,我们经常需要在改变一个组件的同时,通知另一个组件做出响应。例如: 一开始我们的Find按钮是未激活的,用户输入要查找的内容后,查找按钮就被激活,这就是输入框与Find按钮这两个组件间通信的例子。 早...
阅读全文