C/C++
文章平均质量分 66
塘外人
我是程序猿
展开
-
【读书笔记】Effective C++-1 让自己习惯C++(之一)
Effective C++读书笔记--By Nathan.Yu 2007-11-10--1 让自己习惯C++条款01:视C++为一个语言联邦C++最初的名称是:C with Classes今天的C++是:多重泛型编程语言(multiparadigm programming language),同时支持过程形式(procedural)、面向对象形式(object-orie原创 2007-11-11 00:23:00 · 772 阅读 · 0 评论 -
【读书笔记】Effective C++—3 资源管理(之1)
Effective C++读书笔记--By Nathan.Yu 2007-11-27--3 资源管理(之一)常见的资源:文件描述器(file descriptors)、互斥锁(mutex locks)、图形界面中的字型和笔刷、数据库连接、网络sockets。 不论哪一种资源,重要的是,当你不再使用它时,必须将它还给系统。条款13:以对象管理资源(Use objects原创 2007-11-30 00:14:00 · 695 阅读 · 0 评论 -
【读书笔记】Effective C++—3 资源管理(之3)
Effective C++读书笔记--By Nathan.Yu 2007-11-29--3 资源管理(之三)条款15:在资源管理类中提供对原始资源的访问(Provide access to raw resources in resource-managing classes)许多APIs需要指涉指针。 将RAII class对象转换为原始资源的方法:1、 显式转换:原创 2007-11-30 00:33:00 · 627 阅读 · 0 评论 -
【读书笔记】Effective C++—3 资源管理(之4)
Effective C++读书笔记--By Nathan.Yu 2007-12-08--3 资源管理(之四)条款16:成对使用new和delete时要采取相同形式(Use the same form in corresponding uses of new and delete)使用new时发生的事情:1、 内存被分配(通过operator new函数)2、 针原创 2007-12-08 23:22:00 · 611 阅读 · 0 评论 -
【读书笔记】c专家编程
// test_C.cpp :定义控制台应用程序的入口点。// #include"stdafx.h"#include usingnamespace std;void PrintChar(int i);constint two = 2;int order = 0; void Gen_init(char *string)//防止数原创 2008-08-04 11:09:00 · 1002 阅读 · 0 评论 -
C++文档生成工具——Doxygen相关文章的链接
Doxygen快速入门Doxygen简单经验谈。。。C++ 程序文档生成器介绍(doxygen)Doxygen总结Doxygen 使用笔记DoxyGen生成的html制作成CHM后目录为乱码的问题Doxygen注释常用标记使用doxygen为C/C++程序生成中文文档(上)Doxygen文档系列原创 2008-12-25 19:36:00 · 936 阅读 · 0 评论 -
VS2005之virtual继承对象模型
VS2005之virtual继承对象模型(by Nathan.Yu, 2008-12-11)空类类声明: 对象定义:此时,对象x、y、z、a的地址、大小及其内容如下:对象在堆栈中的分布可见:l x的大小为一个字节,其内容初始化为0xccl y和z的大小为4个字节,初始化为一个指针。l原创 2008-12-11 23:59:00 · 667 阅读 · 0 评论 -
C++单元测试工具——Google Test
http://code.google.com/p/googletest/ 主题:Google Test Primer :开始使用Google C++ 测试框架 使用VS2005建立最精简Google C++ Test项目示例(教程)原创 2008-12-31 16:09:00 · 1280 阅读 · 0 评论 -
基于创建型模式的“迷宫”构造
本文在GOF《设计模式》一书“创建型模式”一章的例子和模式的基础上,将各个创建型模式有机的结合在一起。实现了“迷宫”构造过程的封装,增强了构造不同迷宫的可扩展性。 创建型模式:抽象工厂工厂方法生成器原型单件 其中,抽象工厂是由工厂方法组成的,是一组相互关联的工厂方法的集合。 “迷宫”构造类图: 从类图中可以看出各个模式直接原创 2008-10-16 20:26:00 · 2108 阅读 · 0 评论 -
C++基础之extern “C”的作用
相关概念:Name-Mangling(名字修饰、名字改编)编译、链接链接二义性、链接失败extern “C”的作用:C和C++的Name-Mangling(名字修饰、名字改编)是不同的.extern "C"是使C++能够调用C写作的库文件的一个手段,如果要对编译器提示使用C的方式来处理代码的话,那么就要使用extern "C"来说明。 详细链接原创 2008-06-22 13:23:00 · 784 阅读 · 0 评论 -
C++实现一个数组类及其stack适配器
一、问题描述:1、用C++实现一个数组类,类型和大小可设;提供越界检查;支持整体赋值.......2、为其提供栈接口适配功能,使其能作为std::stack的容器二、问题分析:...... 三、实现//////Nathan.Yu//2008-6-13////#ifndef __YARRAY_H__#define _原创 2008-06-13 20:30:00 · 1325 阅读 · 0 评论 -
约瑟夫问题(Josephus)
一、问题描述.......二、问题分析.......三、程序1:基于简单数组// Josephus.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include using namespace std;int main(){ int n, m;//n参与原创 2008-06-10 23:49:00 · 781 阅读 · 1 评论 -
【读书笔记】Effective C++-2 构造/析构/赋值运算(之三)
Effective C++读书笔记--By Nathan.Yu 2007-11-15--2 构造/析构/赋值运算(之三)条款07:为多态基类声明virtual析构函数问题:何时该声明virtual析构函数,何时不该这样做?【要点摘录】C++明确指出,当derived class对象经由一个base class指针被删除,而该base class带着一个non-virtu原创 2007-11-16 01:22:00 · 756 阅读 · 0 评论 -
【读书笔记】usOS-II——互斥型信号量(mutex)
2008-11-23互斥型信号量(mutex)互斥信号量功能:1) 实现对资源的独占式访问(二值信号量)。2) 降解优先级反转。优先级反转:使用实时内核,优先级反转问题是实时系统中出现得最多的问题。设,任务1优先级高于任务2,任务2优先级高于任务3。任务1和任务2处于挂起状态,等待某一事件的发生,任务3正在运行如[图2.7(1)]。此时,任务3要使用其共原创 2008-11-23 20:50:00 · 3804 阅读 · 0 评论 -
【读书笔记】Effective C++-1 让自己习惯C++(之三)
Effective C++读书笔记--By Nathan.Yu 2007-11-12--1 让自己习惯C++(三)条款04:确定对象被使用前已先被初始化读取未初始化的值会导致不明确的行为。最佳的处理方法:永远在使用对象之前先将它初始化。 对内置类型:手工初始化。 对自定义类型:确保每个构造函数都将对象的每一个成员初始化。 别混淆了赋值原创 2007-11-13 01:17:00 · 619 阅读 · 0 评论 -
【读书笔记】Effective C++-2 构造/析构/赋值运算(之四)
Effective C++读书笔记--By Nathan.Yu 2007-11-24--2 构造/析构/赋值运算(之四)条款08:别让异常逃离析构函数C++并不禁止析构函数吐出异常,但它不鼓励你这样做!理由: 设:std::vector v;假设v中有多个Widget,在销毁v的过程中,当有2个以上的Widget在销毁的时候抛出异常,对C++而言就太多了。在原创 2007-11-30 00:09:00 · 786 阅读 · 0 评论 -
【读书笔记】Effective C++—4 设计与声明(之1)
Effective C++读书笔记--By Nathan.Yu 2007-12-08--4 设计与声明(之一)条款18:让接口容易被正确使用,不易被误用(Make interfaces easy to use correctly and hard to use incorrectly)理想上,如果客户企图使用某个接口而却没有获得他所预期的行为,这个代码不该通过编译;如果代码通过原创 2007-12-08 23:23:00 · 724 阅读 · 0 评论 -
ucOS-II基于ARM920T的中断处理过程
程序清单:ucOS-II基于ARM920T的中断处理过程UCOS_IRQHandler//中断入口地址,在中断向量表初始化时被设置 /*此时已处于中断模式(在ARM处理器中,当中断发生时,CPU自动保存CPSR到SPSR_irq,并切换到中断模式),因此sp为中断模式下的栈指针(如上所说,ARM具有中断模式栈)*/;保存现场,先将任务的现场保存到中断栈中原创 2008-11-04 22:05:00 · 1423 阅读 · 0 评论 -
【读书笔记】usOS-II——任务管理
2008-11-6任务管理任务建立 用户可以通过传递任务地址和其它参数到以下两个函数之一来建立任务:OSTaskCreate()或 OSTaskCreateExt()。注意事项 任务可以在多任务调度开始前建立,也可以在其它任务的执行过程中被建立。在开始多任务调度(即调用OSStart())前,用户必须建立至少一个任务。任务不能由中断服务程序(ISR)来建立。原创 2008-11-09 21:13:00 · 1279 阅读 · 0 评论 -
【读书笔记】Effective C++——0 导读
Effective C++读书笔记--By Nathan.Yu 2007-11-10--0 导读1、设计策略如何在两个不同的做法中择一完成某项任务,如该选择inheritance(继承)还是templates(模板)?该选择public继承还是private继承?该选择private继承还是composition(复合)?该选择member函数还是non-member函数?原创 2007-11-10 22:16:00 · 746 阅读 · 0 评论 -
【读书笔记】Effective C++-1 让自己习惯C++(之二)
Effective C++读书笔记--By Nathan.Yu 2007-11-11--1 让自己习惯C++(二)条款03:尽可能使用constconst允许你指定一个语义约束(也就是指定一个“不该被改动”的对象),而编译器会强制实施这项约束。 const的用处:修饰global或namespace作用域中的常量;或修饰文件、函数、或区块作用域中被声明为static的对象;原创 2007-11-12 00:40:00 · 673 阅读 · 0 评论 -
【读书笔记】Effective C++-2 构造/析构/赋值运算(之一)
Effective C++读书笔记--By Nathan.Yu 2007-11-13--2 构造/析构/赋值运算(之一)条款05:了解C++默默编写并调用哪些函数如果你自己没声明,编译器就会为类声明一个copy构造函数、一个copy assignment操作符和一个析构函数。此外如果你没声明任何构造函数,编译器也会为你声明一个default构造函数。只有当这些函数被需要(被调用原创 2007-11-14 01:30:00 · 634 阅读 · 0 评论 -
【读书笔记】Effective C++-2 构造/析构/赋值运算(之二)
Effective C++读书笔记--By Nathan.Yu 2007-11-14--2 构造/析构/赋值运算(之二)条款06:若不想使用编译器自动生成的函数,就该明确拒绝【要点摘录】所有编译器生成的函数都是public且inline的。 如何阻止拷贝行为?将copy构造函数和copy assignment操作符声明为private,并不去定义(实现)它们。借由明原创 2007-11-15 00:42:00 · 650 阅读 · 0 评论 -
【读书笔记】Effective C++—3 资源管理(之2)
Effective C++读书笔记--By Nathan.Yu 2007-11-28--3 资源管理(之二)条款14:在资源管理类中小心copying行为(Think carefully about copying behavior in resource-managing classes) “当一个RAII对象被复制时,会发生什么?”这是每个RAII class作者必须面原创 2007-11-30 00:16:00 · 680 阅读 · 0 评论 -
【读书笔记】usOS-II学习笔记
2008-11-21(忙于论文与找工作,多日未学习usos,今日论文初稿已交,协议书给了ali,得以继续学习。。。。。。。)事件控制ECB块概述事件的类型:信号量、互斥信号量、消息邮箱、消息队列事件控制块的结构:程序清单 L6.1 ECB数据结构#if (OS_EVENT_EN > 0) && (OS_MAX_EVENTS >原创 2008-11-21 21:21:00 · 3066 阅读 · 0 评论 -
c++,C#,java中的类
C++:1、 纯虚函数: 纯虚函数是一种特殊的虚函数,它的一般格式如下: class类名 > { virtual 类型 >函数名 >(参数表 >)=0; …… }; 一般情况下可将一个成员函数在基类中声明为纯虚函数,其实现在派生类中完成。 2、抽象类: 抽象类是一种特殊的类,它是为了抽象和设计的目的为建立的,它处于继承层次结构的较原创 2008-08-04 10:57:00 · 2931 阅读 · 0 评论 -
vs2005中控制台程序启动过程分析
> kernel32.dll!7c816fd7() str2num.exe!mainCRTStartup() 行187 C str2num.exe!__tmainCRTStartup() 行318 + 0x19 字节 C str2num.exe!main(int argc=0x00000001, char * * argv=0x00383ae0) 行188 C++///////原创 2008-08-04 10:56:00 · 1031 阅读 · 0 评论 -
VC++中关于字节对齐的问题
VC中下面几个结构体大小分别是多少呢 struct MyStruct { double m4; char m1; int m3; }; struct MyStruct { char m1; double m4; int m3; }; #pragma pack(push)//保存对齐状态 #pragma pack(16) //设置为16字节对转载 2007-03-13 10:00:00 · 2734 阅读 · 1 评论 -
[转载]高手戏玩c++(2)
简单常识——关于stream 从文件中读入一行 简单,这样就行了: ifstream ifs("input.txt"); char buf[1000]; ifs.getline(buf, sizeof buf); string input(buf); 当然,这样没有错,但是包含不必要的繁琐和拷贝,况且,如果一行超过1000个字符,就必须用一个循环和更麻烦的缓冲管理。下面这转载 2007-01-23 15:55:00 · 773 阅读 · 0 评论 -
[转载]高手戏玩c++(1)
toupper,tolower 地球人都知道 C++ 的 string 没有 toupper ,好在这不是个大问题,因为我们有 STL 算法: string s("heLLo"); transform(s.begin(), s.end(), s.begin(), ::toupper); cout transform(s.begin(), s.end(), s.begin(), ::tolowe转载 2007-01-23 15:53:00 · 819 阅读 · 0 评论 -
c 语言中的字符串操作
本章集中讨论字符串操作,包括拷贝字符串,拷贝字符串的一部分,比较字符串,字符串右对齐,删去字符串前后的空格,转换字符串,等等。C语言提供了许多用来处理字符串的标准库函数,本章将介绍其中的一部分函数。 在编写C程序时,经常要用到处理字符串的技巧,本章提供的例子将帮助你快速学会一些常用函数的使用方法,其中的许多例子还能有效地帮助你节省编写程序的时间。 6.1 串拷贝(strcpy)和转载 2006-11-16 22:04:00 · 1479 阅读 · 0 评论 -
c++ 如何实现多态
// File Name : polymorphism_test.cpp// Author : keakon// Create Date : 2006/5/11// Last Edited Date : 2006/5/26// 通过3次测试,演示了如何实现多态性。#include iostream>#include iterator>#include ostream>#include stri转载 2006-10-06 19:44:00 · 1143 阅读 · 0 评论 -
获取图片的RGB分量
void CShowBMPDlg::GetRGB(CDC& dcPic)...{ std::ofstream ofsCOLOR; ofsCOLOR.open(strPathName+"_rgb.h"); int i=0, j=0; int r=0,g=0,b=0; unsigned int cRGB=0; COLORREF c; ofsCOLO原创 2006-10-06 16:01:00 · 2853 阅读 · 2 评论 -
VC界面显示图片(JPG JPEG GIF)
简述实现步骤如下: 1、通过点击浏览按钮选择JPG图像文件点击浏览按钮打开文件对话框选择JPG图像文件,得到文件所在的路径目录。关键代码如下:char szFilter[] = "JPG Files (*.jpg)|*.jpg|JPEG Files (*.jpeg)|*.jpeg|GIF Files (*.gif)|*.gif|All Files (*.*)|*.*||";转载 2006-10-06 15:56:00 · 7359 阅读 · 0 评论 -
VC界面显示图片(BMP)
1、通过点击浏览按钮选择BMP图像文件点击浏览按钮打开文件对话框选择BMP图像文件,得到文件所在的路径目录。关键代码如下:void CShowBMPDlg::OnButtonSelectiamge() ...{ char szFilter[] = "BMP Files (*.bmp)|*.bmp|All Files (*.*)|*.*||"; CFileDialog dlg(转载 2006-10-06 15:49:00 · 5304 阅读 · 3 评论 -
学习c++的50条忠告(初学者必看)
1.把C++当成一门新的语言学习(和C没啥关系!真的。); 2.看《Thinking In C++》,不要看《C++变成死相》; 3.看《The C++ Programming Language》和《Inside The C++ Object Model》,不要因为他们很难而我们自己是初学者所以就不看; 4.不要被VC、BCB、BC、MC、TC等词汇所迷惑——他们都是集成开发环境,而我转载 2006-10-06 00:48:00 · 1052 阅读 · 0 评论 -
单词,标点统计程序
#include "stdafx.h"#include iostream>#include fstream>#include iomanip>using namespace std;struct WORDS...{ char w[30]; int times;};struct INTERP...{ char ip; int times;};int IsAlreadyHa原创 2006-10-06 00:42:00 · 825 阅读 · 0 评论 -
小型学校人事管理系统
/**//*头文件 StuTeach.h *///Y:#ifndef STUTEACH_H#define STUTEACH_H#include string>#include vector>class People...{public:People(std::string name="" , bool sex=0):m_name(name),m_sex(sex)...{}virtual ~Pe原创 2006-10-06 00:36:00 · 2275 阅读 · 0 评论 -
在C语言中实现动态分配二维数组
在C语言中动态的一维数组是通过malloc动态分配空间来实现的,动态的二维数组也可以通过malloc动态分配空间来实现。 实际上,C语言中没有二维数组,至少对二维数组没有直接的支持,取而代之的是“数组的数组”,二维数组可以看成是由指向数组的指针构成的数组。对于一个二维数组p[i][j],编译器通过公式*(*(p+i)+j)求出数组元素的值: 1、p+i 计算行指针。 2、*(P+i) 具体的转载 2007-02-04 14:20:00 · 5790 阅读 · 0 评论 -
关于c++0x
C++的未来之路:C++0x概览 C++0x的工作已经 进入了一个决定性的阶段。ISO C++委员会对C++0x的目标是使其成为“C++09”。这意味着我们要在2008年完成这个标准以便被ISO成员国批准。最后提交的标准设施将选自目 前正被讨论的那些提案。为了按时完成此项工作,委员会已经停止审查新的提案并将精力集中于目前已经被讨论的那些提案上。 本文简要描述了C++0x标准化工作的指导原则,展转载 2007-02-04 13:59:00 · 2888 阅读 · 0 评论