C++温故笔记(一)

从学C++到现在也有十个年头了,一直在用,也一直在不断的研究和学习。最近时间比较宽松,就把之前的一些书籍翻了出来,把基础的东西都又略读了一遍,有了不少的收获。这可能就是所谓的理论和实践的不断循环吧。将略读过程中所做的笔记整理出来,主要是总结和备忘,如果能对他人有所帮助,那就善莫大焉了。注:都是一些基础的东西,没有什么高深的,大牛可以跳过。

一、模板和泛型

1、模板是C++语言与众不同的特性,是标准库的基础。

2、函数模板是建立算法库的基础,类模板是建立标准库容器和迭代器类型的基础。

3、模板是泛型编程的基础。

二、异常处理

1、C++的异常处理中,需要由问题检测部分抛出一个对象给处理代码,通过这个对象的类型和内容,两个部分能够就出现了什么错误进行通信。

2、异常对象由编译器管理,而且保证驻留在可能被激活的任意catch都可以访问的空间。

3、当抛出一个表达式的时候,被抛出对象的静态编译时类型将决定异常对象的类型。

4、栈展开(stack unwinding),沿嵌套函数调用链继续向上,直至为异常找到一个catch子句,就进入该catch子句,并在该处理代码中继续执行。当catch结束的时候,在紧接与该try块相关的最后一个catch子句之后的点继续执行。

5、析构函数应该从不抛出异常。

三、RAZZ

1、通过定义一个类来封装资源的分配和释放,可以保证正确释放资源。这一技术通常称为“资源分配即初始化”,简称RAII。

2、autoptr类是RAII的实例。

四、析构函数

1、合成析构函数按对象创建时的逆序撤销每个非static成员,因此,它按成员在类中声明次序的逆序撤销成员。

2、析构函数与复制构造函数或者赋值操作符之间的一个重要区别是,即使我们编写了自己的析构函数,合成析构函数仍然运行。

时间: 2025-01-12 19:00:09

C++温故笔记(一)的相关文章

C++温故笔记(三)

一.可变数据成员 1.我们希望类的数据成员(甚至在const成员函数内)可以修改,这可以将它们声明为mutable来实现. 2.可变数据成员永远都不能为const,甚至当它是const对象的成员时也如此. 二.static数据成员和static成员函数 1.static数据成员独立于该类的任意对象而存在,每个static数据成员是与类关联的对象,并不与该类的对象相关联. 2.正如类可以定义共享的static数据成员一样,类也可以定义static成员函数.static成员函数并没有this形参,它

C++温故笔记(二)

一.多重继承 1.多重继承是从多于一个直接基类派生类的能力,多重继承的派生类继承其所有父类的属性. 2.在多重继承下,派生类的对象包含每个基类的对象. 3.(多重继承)构造函数初始化式只能控制用于初始化基类的值,不能控制基类的构造次序. 4.对于多重继承,派生类的指针或引用可以转换为其任意基类的指针或引用. 5.当一个类继承于多个基类的时候,那些基类之间没有隐含的关系,不允许使用一个基类的指针访问其他基类的成员.(注:该特性可以用于权限访问控制.) 6.假定所有根基类都将它们的析构函数适当定义为

linux Shell学习笔记最后一节,温故与知新_其它

脚本编写技巧 脚本文件名命名规则         文件名的字符包括         字母.数字."."."_"和"-", 注意:脚本的文件名命名不能以数字开头. 脚本文件名的命名,尽量使用英文单词.词组或短句的缩写. 脚本版本管理:         脚本作用.主版本号.修改次数.shell类型 变量命名规范         变量名可以由数字和字母组成         变量名采用全部英文字符小写的方式         变量名称尽量使用缩写,最好不要

ArcGIS API for Silverlight学习笔记

ArcGIS API for Silverlight学习笔记(一):为什么要用Silverlight API(转) 你用上3G手机了吗?你可能会说,我就是喜欢用nokia1100,ABCDEFG跟我都没关系.但你不能否认3G是一种趋势,最终我们每个人都会 被包裹在3G网络中.1100也不是一成不变,没准哪天为了打击犯罪,会在你的1100上强制装上GPS.GIS工作既然建立在计算机的基础上,当然也得 随着IT行业与时俱进.       看看现在计算机应用的趋势吧.云(计算),这个东西可讲不清楚,因

又是开学季 应用汇为大学生们准备的笔记APP

又是一年开学季!又要上课,认真听教授讲课了:又可以看到心爱的那个她,每天在楼下无止境的等待了:又可以参加社团活动,忙得晕头转向了:又可以认识新萌帅,开始新的恋情了.这么多美好的事情都要发生了,然而焦虑症来了.孰轻孰重,谁先谁后?别着急,应用汇特意为大家搜集了好玩的笔记类APP,绝对是治愈"焦虑症"的法宝.让你轻松自如应对每件事! TOP1:涂书笔记 推荐理由:术业有专攻,此乃学生专业款,专为读书人设计的APP 应用介绍:你是不是经常在阅读过程中遇到一些非常喜欢的段子想要记下来?手写太麻

APACHE安装笔记

apache|笔记 作者:车东 摘要: WEB应用容量规划:根据硬件配置和WEB应用的特点进行WEB服务的规划及一些简单的估算公式: APACHE安装过程:apache的通用的简化安装选项,方便以后的应用的模块化配置:修改 HARD_SERVER_LIMIT:vi /path/to/apache_src/src/include/httpd.h#define HARD_SERVER_LIMIT 2560 <===将原来的 HARD_SERVER_LIMIT 256 后面加个"0"a

JetSpeed学习笔记(一)

笔记 JetSpeed学习笔记(一) fuweilin 2005-4-7 前言 参加了公司的portal的兴趣小组,今天对portal进行学习.首先上网看了看一些portal的资料,对portal.portlet.portlet container以及JSR168等概念有个基本的了解.决定进一步实战的方式感受portal,于是学习JetSpeed.     1.  JetSpeed介绍JetSpeed是Apache组织开发的一个采用Java和XML的开放源代码的企业信息门户的实现.门户可以让终端

安装配置bugzilla笔记

因为自己在安装配置的时候走了些弯路,所以一方面自己提个醒,另一方面可以让有这方面需要的朋友做个参考 bugzilla是一个可以发布bug以及跟踪报告bug进展情况的开源软件,有关的官方文档可以查看:http://www.bugzilla.org/docs/ 本人是在RH9上安装配置成功bugzilla-2.18rc3的,事先也成功安装配置过2.16.7,后来发现在2.18中加入了图表的功能,觉得蛮有意思的,所以升级了一下.在安装前先确定自己机器上一些软件版本的情况:perl(5.6 or abo

Nutch 笔记(一):Quick Start

最近用到了nutch,目的是针对指定的一些网站抓取其内容,然后做分析用. nutch 笔记是我使用nutch过程一系列总结,写下自己的学习经过和大家一起分享,也希望能得到大家的指点 好了,废话少说,言归正传,第一篇:Quick Start,我们的目标是快速的能跑起来,能检索出我们想要的结果. 首先要明白nutch是什么? nutch是一个基于lucene的开源搜索引擎,它包括了所有你想要的东西,是一个完整的解决方案 . 一:安装JDK 如果你已经安装了JDK,并且已经设置了JAVA_HOME,那