自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

翱翔

天高任鸟飞,海阔凭鱼跃!

  • 博客(17)
  • 收藏
  • 关注

原创 (6)函数

内置类型的未初始化局部变量将产生未定义的值。某些时候, 有必要令局部变量的生命周期贯穿函数调用及之后的时间。可以将局部变量定义成static类型从而获得这样的对象。 局部静态对象在程序的执行路径第一次经过对象定义语句时初始化, 并且直到程序终止才被销毁, 在此期间即使对象所在的函数结束执行也不会对它有影响。如果局部静态变量没有显式的初始值, 它将执行值初始化, 内置类型的局部静态变量初始化为0(1

2016-05-27 23:35:47 346

原创 (5)语句

使用空语句时应该加上注释,从而令读这段代码的人知道该语句是有意省略的。在if语句中,条件部分必须能转换成布尔类型。对于悬垂else,C++规定else与离它最近的尚未匹配的if匹配,从而消除了程序的二义性。case关键字和它对应的值一起被称为case标签。case标签必须是整型常量表达式,且任何两个case标签的值不能相同(161)。即使不准备在default标签下做任何工作,定义一个defau

2016-05-27 10:32:46 343

原创 (4)表达式

小整数类型(如 char、bool、short等)通常会被提升成较大的整数类型,主要是int(120)。我们使用重载运算符时,其包括运算对象的类型和返回值的类型,都是由该运算符定义的;但是运算对象的个数、运算符的优先级和结合律都是无法改变的。当一个对象被用做右值的时候,用的是对象的值(内容);当对象被用做左值的时候,用的是对象的身份(在内存中的位置)。如果表达式的求值结果是左值,decltype

2016-05-24 21:52:32 390

原创 (11)以对象管理资源

这里写图片描述

2016-05-16 23:39:53 345

原创 (10)复制对象时勿忘每一个成分

直接上图片吧!

2016-05-16 23:02:01 244

原创 (9)在 operator=中处理自我赋值

实际上两个对象只要来自同一个继承体系,它们甚至不需声明为相同类型就有可能造成“别名”,因为一个base class 的reference 或pointer 可以指向一个derived class 对象:

2016-05-16 22:07:53 224

原创 (2)变量和基本类型

数据类型是程序的基础;它告诉我们数据的意义以及我们能在数据上执行的操作。 C++定义了几种基本的内置类型(如字符、整型。浮点型等),本节主要讲述内置类型。1. 与其他整型不同,字符型被分为了三种:char 、signed char 和unsigned char。特别需要注意的是:类型char和类型 signed char并不一样。尽管字符型有三种,但是字符的表现形式却只有两种:带符号和不带

2016-05-16 19:43:37 255

原创 (1)C++ 初识

本系列为 《C++ Primer》中文第五版的读书笔记。1.对于C++语言的输入与输出,本书中的很多示例对象都使用了 iostream 库,它包含两个个基础类型istream和ostream,分别表示输入流和输出流。一个流就是一个字符序列,识从IO设备读入或写入IO设备的。在标准输入输出对象中。使用一个名为 cin 的istream类型的对象,表示标准输入。标准输出有三个,分别是

2016-05-16 19:42:44 296

原创 (1)摄像机-计算机接口

众所周知,摄像机捕获图像后输出模拟或者数字视频信号。本文将讨论图像如何传到计算机中,又是如何重建成为灰度或彩色矩阵图像。一、对于模拟信号,我们需要再计算机中安装一块叫做图像采集卡的专用接口。有关图像采集卡的工作原理我这里就不展开讲了。首先来看看模拟信号。对于电视机有多种模拟视频标准,但是对于机器视觉来讲,其中四中比较重要:EIA-170和CCIR。这是黑白的视频标准;PAL和NTS

2016-05-16 19:40:38 1215

原创 (8)绝不在构造和析构过程中调用virtual函数

你不该在构造函数和析构函数期间调用virtual函数,因为这样的调用会带来你意想不到的结果,就算有你也不高兴。1. base classes 构造期间virtual函数绝不会下降到derived classes 阶层。2. 在derived classes 对象的base classes 构造期间,对象类型是 base classes 而不是 derived classes。不只virtu

2016-05-16 19:38:17 247

原创 (7)别让异常逃离析构函数

C++并不禁止析构函数吐出异常,但它不鼓励你这样做。我们可以建立一个类通过调用来管理另外一个类。但问题是,如果在调用管理类的时候出现异常,那么无疑增加了更多的麻烦。为解决这个问题,我们有两种方案(46页)。请记住:1. 析构函数绝对不要吐出异常。如果一个被析构函数调用的函数可能抛出异常,析构函数应该捕捉任何异常。然后吞下它们(不传播)或者结束程序。2. 如果客户需要对某个操作函数运行期

2016-05-16 19:37:28 236

原创 (6)为多态基类声明virtual析构函数

在C++中,继承类对象经由一个基类指针被删除,而该基类带着一个non-virtual析构函数,其结果是未定义的—实际执行是通常发生的是对象的继承成分没有被销毁。解决办法:给基类一个virtual析构函数。因此引出了我们今天的主题。1. 任何类只要带有virtual函数都几乎确定应该也有一个virtual析构函数。如果类不含有virtual函数,通常便是它并不意图被用做一个基类。当类不企

2016-05-16 19:36:37 263

原创 (5)若不想使用编译器自动生成的函数,就该明确拒绝

可以将拷贝构造函数或者拷贝赋值运算符声明为private的来阻止某些函数的默认操作。一般而言这样做并不安全,因为成员函数和友元函数可以调用你的private函数。那么我们可以将它声明为private的并且不去定义它,那么我们的目的就可以达到了。我们可以专门为阻止copying动作而设计一个基类:class Uncopyable{protected:Uncopyable () { }

2016-05-16 19:35:21 231

原创 (4)了解C++默默编写并调用了哪些函数

如果你写下:class Empty { };这就好像你写下这样的代码:class Empty{public:Empty () {…} //默认构造函数Empty (const Empty &rhs) {…} //复制构造函数~Empty () {…} //析构函数Empty & operator=(const Empty &rhs) {…} //拷贝赋值运算符

2016-05-16 19:33:50 249

原创 (3)定对象被初始化前以先被初始化

永远在使用对象之前先将它初识化。1. 有些情况下即使面对的成员变量属于内置类型,也一定得使用初值列。如果成员变量是const或者reference,它们就一定需要初值,不能被赋值。2. C++有着十分固定的“成员初始化次序”。是的 ,次序总是相同的:基类更早于继承类被初识化,而类的成员变量总是以其声明次序被初始化。3. 所谓static对象,就是包括global对象、定义于namesp

2016-05-16 19:33:04 269

原创 (2)尽可能使用const

关键字 const 的一件奇妙事情是,它允许你指定一个语义约束,而编译器是强制实施这项约束。关键字const多才多艺。1. 关键字const出现在星号左边,表示被指物是常量;如果出现在星号右边,表示指针自身是常量;如果出现在星号两边,表示被指物和指针本身两者都是常量。注意:一下两种类型是一样的void f1 (const Widget * pw);void f2 (Widg

2016-05-16 19:31:35 249

原创 (1)尽量以const、enum、inline替换#define

一、对于 #define AS 1.6,通常用 const double ASI=1.6;来替换更好原因如下:(1)ASI肯定可以写被编译器看到,当然就会进入记号表内;(2)对浮点常量而言,使用常量可能比使用#define导致较小量的码;当我们以常量替换#defines,有两种特殊情况必须要说明:(1)定义常量指针,有必要将指针声明为 const。例如若要在头文件内

2016-05-16 19:26:24 418

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除