C/C++
文章平均质量分 77
_suzhou
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
数字0到9999转换大写汉字整数程序(C语言实现)
输入:9001输出:九千零一#include#include#include#define DEBUG printf/*========================================================*/int len_num(int num); //to judge the length of the numb原创 2013-03-21 10:37:47 · 1977 阅读 · 0 评论 -
Effective C++(4) 确定对象被使用前已先被初始化
危害:读取未初始化的值会导致不明确甚至是半随机化的行为。最佳处理办法:永远在使用对象之前先将它初始化;确保每一个构造函数都将对象的每一个成员初始化。1 注意区分赋值和初始化:从初始化的角度而言,这不是一个最佳的处理办法。虽然这会让对象的指最终为你期望的值,但是实际上,对象的成员变量的初始化动作发生在进入构造函数本体之前。而在构造函数本体之内,不是被初原创 2013-12-24 14:51:21 · 1054 阅读 · 0 评论 -
Effective C++(6) 如何拒绝编译器的自动生成函数
问题聚焦:如果不希望class支持某一成员函数,那么不声明和定义它就可以了,但是这一策略对与拷贝构造函数和重载赋值操作符并不起作用。因为如果不声明它们,那么当尝试调用它们的时候,编译器会为你声明和定义它们。这显然不是你所希望看到的。原创 2013-12-24 15:23:22 · 1245 阅读 · 0 评论 -
Effective C++(11) 自我赋值(a=a)时会发生什么?
问题聚焦:自我赋值看似有点愚蠢的行为,其实总会发生的首先:它是合法的; 其次,它不一定是安全的; 再次,它有时候不是那么明显。原创 2013-12-30 20:07:58 · 1260 阅读 · 0 评论 -
Effective C++(7) 为多态基类声明virtual析构函数 or Not
问题聚焦:已经对一个对象执行了delete语句,还会发生内存泄漏吗?原创 2013-12-24 17:09:43 · 1122 阅读 · 0 评论 -
Effective C++(9) 构造函数调用virtual函数会发生什么
问题聚焦:不要在构造函数和析构函数中调用virtual函数,因为这样的调用不会带来你预想的结果。让我先来看一下在构造函数里调用一个virtual函数会发生什么结果原创 2013-12-26 15:34:49 · 1311 阅读 · 0 评论 -
Effective C++(14) 在资源管理类中小心copying行为
问题聚焦: 上一条款所告诉我们的智能指针,只适合与在堆中的资源,而并非所有资源都是在堆中的。 这时候,我们可能需要建立自己的资源管理类,那么建立自己的资源管理类时,需要注意什么呢?原创 2014-01-23 09:29:41 · 1542 阅读 · 0 评论 -
Effective C++(17) 以独立语句将newed对象置入智能指针
问题聚焦: 使用了资源管理对象(如智能指针),就一定是安全的吗?显然不是。 资源泄露发生可能在于,在“资源被创建”和“资源被转换为资源管理对象”两个时间点之间有可能发生异常干扰。原创 2014-02-02 20:17:41 · 1272 阅读 · 0 评论 -
Effective C++(16) 成对使用new和delete时要采取相同的形式
问题聚焦: 我们都知道,new和delete要成对使用,但是有时候,事情往往不是按我们预期的那样发展。 对于单一对象和对象数组,我们要分开考虑 遇到typedef时,也需要搞清楚,是单一对象类型还是对象数组类型原创 2014-02-02 19:45:28 · 1326 阅读 · 0 评论 -
Effective C++(15) 在资源管理类中提供对原始资源的访问
问题聚焦: 资源管理类是为了对抗资源泄露。 如果一些函数需要访问原始资源,资源管理类应该怎么做呢?原创 2014-02-01 23:30:16 · 1666 阅读 · 0 评论 -
Effective C++(18) 让接口更容易被正确使用,不易被误用
问题聚焦: 从这个条款开始,我们把注意力转移到软件设计和声明上来,具体的说就是,C++接口的设计和声明。 所谓软件设计,就是以一般习惯的构想开始,演变成细节的实现,最终开发针对性的特殊接口。 接口的设计和声明的一个最基本的准则是:让接口容易被正确使用,不容易被误用。 引入新类型是预防接口被误用的常见手段之一。原创 2014-02-11 09:14:59 · 1243 阅读 · 0 评论 -
Effective C++(19) 设计class犹如设计type
问题聚焦: 这一节不涉及代码,但是我们需要明确的一点是,思想比代码要重要得多。 设计优秀的classes是一项艰巨的工作,就像设计好的types一样。 我们应该带着和“语言设计者当初设计语言内置类型时”一样的谨慎来研讨class的设计。原创 2014-02-11 09:44:53 · 1350 阅读 · 0 评论 -
ODOA(1) 翻转句子中单词的顺序(C语言实现)
问题描述:翻转句子中单词的顺序输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。句子中单词以空格符隔开。为简单起见,标点符号和普通字母一样处理例如:输入“I am a student.”,则输出“student.a am I”。原创 2014-02-12 23:36:09 · 4136 阅读 · 1 评论 -
ODOA(2) 求二叉树中两个节点的最大距离(C语言实现)
问题描述;如果我们把二叉树看成一个图,父子节点之间的连线看成是双向的,我们姑且定义"距离"为两节点之间边的个数。写一个程序求一棵二叉树中相距最远的两个节点之间的距离。原创 2014-02-18 23:54:44 · 8117 阅读 · 0 评论 -
C++ Primer(6) 模板和泛型编程(上)
问题聚焦:泛型编程是独立于变量类型的方式编写代码;模板是泛型编程的基础。本篇主要介绍模板的基础知识,包括:模板的定义和模板的实例化。原创 2013-12-28 17:06:37 · 1111 阅读 · 0 评论 -
Effective C++(5) 了解C++默默地编写并调用哪些函数
预热:一个空的类,当编译器处理过之后,就包含:一个copy构造函数一个重载赋值操作符一个析构函数一个默认构造函数Demo:class Empty() { }; // 声明一个空的类class Empty() // 经过编译器处理后{public: Empty() { ... } Empty(const Empty原创 2013-12-23 11:45:36 · 863 阅读 · 0 评论 -
Effective C++(1-2) 编译器替换预处理器
1 C++最主要的四部分:CObject-Oriented C++: 面向对象Template C++:泛型编程STLC++高效编程守则视状况而变化,取决于你使用C++的哪一部分。2 尽量以const, enum , inline替换 #define2.1 #define ASPECT_RATIO 1.653记号名称ASPECT_RA原创 2013-12-23 11:06:28 · 1030 阅读 · 0 评论 -
细嚼慢咽C++primer(1)——指针,void*型指针,const限定符(2)
1 一个有效指针的三种状态:1) 保存一个特定对象的地址;2) 指向某个对象后面的另一对象;3) 0值。表明它不指向任何对象。如果必须分开定义指针和其所指向的对象,则将指针初始化为0。如果在代码中使用了NULL这个于处理器变量,则编译时会自动被数值0替换。2 void*型指针void*指针可以博阿村任何类型对象的地址,表明该指针与这一地址原创 2013-05-15 10:51:32 · 879 阅读 · 0 评论 -
【Linux操作系统分析】计算机是怎样工作的
实验一 计算机是怎样工作的周肃 SA******189一 实验目的通过对示例程序进行分析,熟悉gcc工具,理解计算机是怎样工作的,并且讨论分析多任务计算机是怎样工作的。二 实验内容1 请使用Example的c代码分别生成.cpp,.s,.o和ELF可执行文件,并加载运行,分析.s汇编代码在CPU上的执行过程;2 实验报告要求:通过实验解原创 2013-05-15 22:06:00 · 1077 阅读 · 0 评论 -
细嚼慢咽C++primer(3)——引用形参,内联函数,重载函数,指向函数的指针
1 引用形参1)使用引用形参返回额外的信息如何定义既返回一个迭代器又返回出现次数的函数?向函数传递一个额外的引用实参,在函数内部对引用实参进行修改的同时,可以认为该引用实参返回了一个信息。2) 在向函数传递大型对象时,需要使用引用形参,这是引用形参适用的另一种情况。使用引用形参,函数可以直接访问实参对象,而无须复制它。bool isShort原创 2013-05-21 09:50:23 · 1219 阅读 · 0 评论 -
定义和声明的分离:extern关键字
在谈到extern关键字之前,首先要清楚地认识两个名词:变量的定义和声明。变量的定义:用于为变量分配存储空间,还可以为变量指定初始值。在一个程序中,变量有且仅有一个定义。变量的声明:用于向程序表明变量的类型和名字。两者的关系:定义也是声明:当定义变量时,我们声明了它的类型和名字。弄清了这两者的关系,现在可以来理解extern这个关键字了。extern原创 2013-05-08 21:35:07 · 802 阅读 · 0 评论 -
输入一颗二元查找树,将该树转换为它的镜像(递归解法)
代码自己敲的,中间建树的时候遇到了麻烦,以前是先申请空间给根节点,这样的话根节点就需要单独处理。突发奇想用了下双重指针,对双重指针的作用和用法有了更好的理解。用递归解法做这个问题不难,主要熟悉了一下建树,打印树的代码。中间有调试代码,就不改了,方便看执行过程。#include#include#define DEBUG(i) printf("Here " #原创 2013-05-13 14:35:17 · 788 阅读 · 0 评论 -
2013.05.14_C++primer笔记
1 为什么头文件只能用于声明,不能用于定义? 在说明这个问题之前,有三个例外是可以定义在头文件中的:类,值在编译时就已知道的const对象和inline函数。 在头文件中定义这些实体,是因为编译器需要它们的定义来产生代码。 现在来看看这个问题。 首先明确的是,如果把定义写在.h文件中,那么很可能出现多重定义的报错。原创 2013-05-14 16:22:02 · 662 阅读 · 0 评论 -
【Linux操作系统分析】中断和异常(1)——中断描述符表IDT,I/O中断处理,中断向量
1 中断中断通常被定义为一个事件,该事件改变处理器执行的指令顺序。中断通常分为同步中断和异步中断。同步中断(中断)是当前指令执行时由CPU控制单元产生的,之所以称为同步,是因为只有在一条指令终止执行后CPUT才会发出中断。异步中断(异常)是由其他硬件设备依照CPU时钟信号随机产生的。分类:中断:分为可屏蔽中断(控制单元会忽略屏蔽的中断)和非屏蔽中断(由CPU辨认)。原创 2013-05-22 09:36:01 · 2358 阅读 · 0 评论 -
细嚼慢咽C++primer(4)——类(1):构造函数,类型别名
1 最简单地说,类即使定义了一个新的类型和一个新的作用域。2 基础1 构造函数构造函数一般应使用一个构造函数初始化列表,来初始化对象的数据成员。Sales_item(): units_sold(0), revenue(0.0) {};2 成员函数在类内部定义的函数默认为inline.将关键字const加在形参表之后,就可以将成员函数声明为常量:原创 2013-09-29 19:50:40 · 815 阅读 · 0 评论 -
细嚼慢咽C++primer(2)——表达式,sizeof,new,delete,类型转换
1 表达式基础1)操作符的含义:该操作符执行什么操作以及操作结果的类型,取决于操作数的类型。2)短路求值(short-circuit evaluation):逻辑与和逻辑或操作符总是先计算其做操作数,只有在仅靠左操作数的值无法确定该逻辑表达式的结果时,才会求解其有操作数。3)bool值:false用0表示,true用1表示。4)bitset对象或整型值的使用原创 2013-05-17 19:49:16 · 802 阅读 · 0 评论 -
const关键字浅析
1 const变量const double PI = 3.14159;定义之后不能被修改,所以定义时必须初始化。const int i, j = 0; // error: i is uninitialized constconst变量默认为文件的局部变量,此变量只存在于那个文件中,不能被其他文件访问。通过指定const变更为extern,就可以在整个程序原创 2013-10-10 22:23:52 · 921 阅读 · 0 评论 -
细嚼慢咽C++primer(5)——顺序容器
1 顺序容器的定义容器是容纳特定类型对象的集合。顺序容器:将单一类型元素聚集起来成为容器,然后根据位置来存储和访问这些元素,这就是顺序容器。标准库的三种顺序容器类型:vector, list 和 deque。适配器:stack,queue和priority_queue类型。适配器是根据原始的容器类型所提供的操作,通过定义新的操作接口,来适应基础的容器类型。头文件:原创 2013-11-06 14:27:59 · 880 阅读 · 0 评论 -
Effective C++(12) 复制对象时要复制每一个成员
问题聚焦:负责拷贝的两个操作:拷贝构造函数和重载赋值操作符。一句话总结,确保被拷贝对象的所有成员变量都做一份拷贝。原创 2013-12-31 09:29:17 · 1098 阅读 · 0 评论 -
Effective C++(10) 重载赋值操作符时,返回该对象的引用(retrun *this)
问题聚焦:这个准则比较简短,但是往往就是这种细节的地方,可以提高你的代码质量。让我们一起学习这条重载赋值操作符时需要遵守的准则吧。原创 2013-12-30 18:38:53 · 1713 阅读 · 0 评论 -
Effective C++(13) 用对象管理资源
问题聚焦:从这条准则开始,都是关于资源管理的。资源,一旦用了它,将来必须还给系统。本条准则,基于对象的资源管理办法,建立在C++的构造函数,析构函数和拷贝函数(拷贝构造函数和重载赋值操作符)的基础上。原创 2014-01-02 09:32:34 · 1494 阅读 · 0 评论 -
C++要点(1)mutable关键字
本文主要介绍一下内容1 mutable语义2 const语义3 mutable和const的关系mutable提供的灵活性mutable语义在C++中,mutable是为了突破const的限制而设置的。 被mutable修饰的变量,将永远处于可变的状态,即使在一个const函数中,甚至结构体变量或者类对象为const,其mutable成员也可以被修改。原创 2015-05-13 10:34:13 · 1130 阅读 · 0 评论
分享