C++
文章平均质量分 58
likexin
没什么特点哦
展开
-
[原]链表的简单应用!
[原]链表的简单应用!#include using namespace std;struct student{ int no; char name[10]; student *next;};void chaxun(student *pl){ while(pl->next!=NULL) { coutno原创 2007-02-10 14:32:00 · 893 阅读 · 0 评论 -
深入浅出理解设计模式中的工厂类--虚构造函数!
最近在学习软件工程.了解了软件从无到有的一个概括性知识!从最开始的问题定义 ,到需求分析,在到软件架构,在到软件构建,而软件构建中又分为很多的小项,如详细设计,编码,单元测试,系统测试, 还有就是后期的维护.才发现自己平时开发项目直接从自己的想法开始做是多么的无知.怪不得自己总返工,有时修改量大的我也只能对自己说就这样吧.从这点就可以知道,好的前期工作是多么的重要.正好最近在学软件工原创 2007-07-14 04:24:00 · 1689 阅读 · 0 评论 -
深入分析异常机制!
我们知道C++和C最大的不同就是它更好的支持面向对象程序设计,封装,多态,继承,异常,命名空间.通用型编程等等.对于面向机制为什么说是更好的支持哪.是因为用C同样可以编写面向对象程序设计.我们都知道C函数可以通过结构体和函数指针来设计一些低级的类.但C++提供的CLASS则更好的维护了数据的隐藏.而不是想C那样任何数据都要通过函数来操作.C++是通过数据和方法的封装来实现对数据的操作.至原创 2007-07-18 07:46:00 · 1043 阅读 · 0 评论 -
对自定义的C++内存管理的一些总结!
说到内存管理就一定是与堆内存所联系,我们知道,自动变量是由栈来实现的,而堆内存是由程序员来控制管理的.当我们有这样一段代码:void * p=new TYPE NAME(constructor);我们就申请了一块内存.这块内存对于程序员只是透明的一个占有sizeof(TYPENAME)大小的内存块.并在该内存上构造了这个类型的对象. 如果使用placement new实现原理也原创 2007-07-16 16:13:00 · 1585 阅读 · 0 评论 -
通过汇编角度理解虚函数!
今天通过汇编角度在次理解一下虚函数.工作环境VC6方法DEBUG 跟踪MEMORY测试程序代码 虽然是测试程序但希望大家还是养成良好习惯 不要污染命名空间测试代码:#include "iostream"using std::cout;using std::endl;class a{ int m_a;public: a(int x):m_a(x) {} virtua原创 2007-07-10 02:55:00 · 3573 阅读 · 5 评论 -
项目心得-驯服古怪的PROFILE!
转贴请注明出处!今天是工作的第2天,项管第一天就让我接触PROFILE 测试一个程序,来得知各个函数的执行次数和时间.我曾经在看书的时候对这种测试程序有一些了解, 知道它是为了了解程序的性能屏障,并针对他们进行优化.昨天做了一天却没有一点收获,到了家自己写了个简单的测试程序.并对工程进行设置.网上没有太多的PROFILE使用的文章,太多太多的转载让我失望而且无奈.于是自己终于通过努力在昨天原创 2007-08-02 23:33:00 · 1426 阅读 · 1 评论 -
项目心得-通用模板并不一定通用!
今天的项目进展顺利,跟踪程序发现项目中对文件读取的函数调用的是一个继承自VECTOR类的operator [] ,通过自觉认为模板确实具有很好的通用性,但如果把只需要实现一些简单功能的类继承于VECTOR,那么类不但从空间上会有很大开销,效率也一定会有所下降.于是自己编写了一个可变长的数组类, 通过PROFILE,发现性能的确有了可观的提高!所以在我们选择标准库的时候 一定要考虑是否有必要自己写一原创 2007-08-13 23:25:00 · 1375 阅读 · 0 评论 -
项目心得-C++的命名空间你真的会用了吗?
说到命名空间,很多初学者会马上联想到IOSTREAM里的COUT CIN ENDL 他们是每本教程最早出现的关键字,也许你会知道命名空间的基本知识,能够理解命名空间的写法,定义,以及特殊的用法.但能够把命名空间很好的运用到软件项目上除了你要有很好的基础 还要对命名空间的存在的理由要理解透彻!今天在单位加班,发现我所做的项目太多的函数定义了同样类型的变量,要是内置类型我也就睁只眼闭只眼了原创 2007-08-18 17:30:00 · 6503 阅读 · 4 评论 -
mfc消息映射防真!
最近在学习MFC底层,通过看书受到启发,决定抛开书自己来独立写一下主要核心代码!先定义一个MYMSGSTRUCT消息结构体和一个MYMSG宏. struct mymsgstruct...{UNIT mymeesage;LONG (*ptr)( HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam );}原创 2007-06-11 04:25:00 · 974 阅读 · 0 评论 -
总结一下我所掌握的虚函数和多态 (望高手指点!)
C++也学了一段时间了,C++比较让人混乱的除了复杂的标准库和算法.基础部分里大概应该属指针 引用和函数传参的问题了,对于这些头疼的问题,我们只能多看 多写,多练,没有更好的办法. C++的多态性就和这些因素有所关系.今天我来说说自己所掌握的关于多态的知识!我假设现在的你已经了解C++基于对象的部分,也就是你会写一个类,明白类所产生的对象中包含的是他的数据成员(无虚函数的时候).而类的成员原创 2007-06-11 22:30:00 · 1053 阅读 · 0 评论 -
真的想抨击一下那些"批评家"--所谓的那些专家
也许自己是学习C++的.对他有一种爱恋.但我并不是说自己就一定会说C++是多么多么厉害,多么万能.我只是一个菜鸟,也许说的话很没分量,但我还是想说,那些说这语言不好那语言不好的专家们,你门的专家头衔是不是放错地方了,如果你们真的那么厉害,不如把中国的软件业搞上去,为什么在中国你们是一顶一的高手,为什么在国外的杂志和书刊上却从没见过你们的名字.每一种语言的诞生都有他的道理 ,都有他的长处,就象一原创 2007-09-14 20:43:00 · 1063 阅读 · 0 评论 -
避免动态分配内存后因异常而导致的内存泄露
当在一个函数中动态创建一个对象时如果在delete之前发生异常就会导致内存泄露,原因很简单,因为程序没有处理delete,如果是局部变量,则会保证局部变量的释放.所以我们需要定义一个类来管理NEW来的内存通过在函数中定义局部对象,在异常发生的时候就会自动释放.也就是说自动调用他的析构函数.我们可以在它的构造函数中去NEW一个我们要得对象,而类中保留一个数据成员存放NEW返回的指针,析构时DELE原创 2007-06-17 03:51:00 · 1458 阅读 · 0 评论 -
终于通过测试搞明白operator delete了!
最近写了一个简单的学生管理系统的类 在内存管理的地方遇到了点麻烦,现在解决了,对operator delete有了更深入的了解!先看一下代码.头文件#ifndef KEXIN#define KEXIN#include #include #endifnamespace mystd{ class cstudent { private: char * pname;原创 2007-07-06 21:14:00 · 4449 阅读 · 0 评论 -
深入了解"地址对齐"!
我们在程序设计时例如VC的结构体中都接触到了地址对齐这个概念, 我的BLOG中已经把一篇很不错的文章转贴到我这里了,大家有兴趣可以看看,在这里就不多说了. 现在用存储单元的角度来说明一下他的原因. 一块存储空间的起始地址假设为000000H,我们应该知道存储单元以字节为单位,就是说有8位.一个字很容易就应该知道是2字节,双字就是4字节,假如我门要存储1字节的原创 2007-04-04 00:46:00 · 1801 阅读 · 0 评论 -
CString 操作指南
CString 操作指南 原文出处:codeproject:CString Management通过阅读本文你可以学习如何有效地使用 CString。 CString 是一种很有用的数据类型。它们很大程度上简化了MFC中的许多操作,使得MFC在做字符串操作的时候方便了很多。不管怎样,转载 2007-03-23 16:47:00 · 964 阅读 · 0 评论 -
原码、反码、补码
原码、反码、补码 相信大家看到这个标题都不屑一顾,因为在任何一本计算机基础知识书的第一章都有他们的解释,但是在书上我们只能找到一些简单的定义,没次看过之后不久就忘了。最近论坛里有人问起这些概念,看到很多人的回复是以前看过现在忘了去看看某某书之类,很少有给出一个合理的解释。于是本人就开始思考(虽然上帝会发笑,我还是要思考。),于是得出了以下的结论。 数值在计算机中表示形式为转载 2007-02-21 19:13:00 · 1205 阅读 · 0 评论 -
堆与栈有什么区别
堆与栈有什么区别?一、预备知识—程序的内存分配一个由c/C++编译的程序占用的内存分为以下几个部分1、栈区(stack)— 由编译器自动分配释放,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。2、堆区(heap) — 一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。3、全局区(静态区)(s转载 2007-02-10 14:24:00 · 783 阅读 · 0 评论 -
C+API 文件复制,删除
前一阵学完C++后,接触MFC之前学习了一些API的知识. 文件删除工具#include "windows.h"#include "iostream.h"int main(){ cout BOOL b; char name[30]; cin>>name; b=DeleteFile((LPCTSTR)name);原创 2007-02-10 14:34:00 · 2483 阅读 · 0 评论 -
数据在内存中始终是以二进制形式存放的。数值是以补码表示的
基本类型其中还包括-整型,实型,枚举类型!数据在内存中始终是以二进制形式存放的。数值是以补码表示的。 整型: 一个正数的补码和其原码的形式相同。而负数的补码方式是将其绝对值的二进制形式“按位求反再加1” 实型: 在内存中占4个字节,是按照指数形式存储的,实型数据分为小数部分和指数部分,分别存放!计算机用二进制表示小数部分,用2的幂次来表示指数部分! 字符型: 在内存中字符的存储实际上是把字符相对应转载 2007-02-21 19:22:00 · 10077 阅读 · 0 评论 -
今天学到的C++的一些新知识!
1.命名空间的using声名. 一般我们都写为#include int main(){ int a=1; std::cout return 0;}#include using namespace std;int main(){ int a=1; cout return 0;}也可以用 using namespac::nameusing 每次只能作用于一原创 2007-02-22 03:40:00 · 930 阅读 · 0 评论 -
初学C/C++的朋友一定要看的(送给所有初学编程的人)
先向大家自我介绍.本人也是菜鸟一个.但下面我要写的是为了不让初学者走弯路. 很多人上来就问我想学编程,学什么好,当他们了解到C语言的重要性后,就开始问,我要学C,告诉我哪本书好.相信大家对这些话太熟悉了. 我也是从初学走过来的,当然我现在也仍然是一个初学者.但我希望我的一些想法能帮助大家更好更快的学好编程.走好编程的路. 1.学编程先从什么开始学习:原创 2007-02-21 21:49:00 · 1864 阅读 · 0 评论 -
自己总结C/C++的一些容易被遗忘的基础知识!
C/C++的短路求值。逻辑与和逻辑或操作符总是先计算其左操作数。然后计算其右操作数,只有在仅靠左操作数的值无法确定该逻辑表达式的结果时,才会求解其右操作数,如果左操作数的结果可以确定该逻辑表达式的值。则不在计算右操作数。VC中结构体/类的内存分配拿结构体来说如果定义了一个如下结构体:struct a{ int i; double d; char c;};很多人会认为他所占内存原创 2007-03-05 22:55:00 · 1380 阅读 · 0 评论 -
总结性的谈一谈函数传参的知识。(c/c++初学的一定要看)
声明一下,本人不过菜鸟一个,有什么理解上的错误,希望大家能指出。 函数是最长用到的知识。试想一下,如果没有函数,你的main函数可能长的连你自己都觉得不好意思。既然每个人都会经常使用函数,我们有必要好好的理解函数的知识。 函数主要的知识点就是函数的声明,定义,调用。 今天主要讲函数的定义和调用。先简要的说一下声明。当调用函数在定义函数之前就应当声明一下告诉系统函数讲在后边定义。原创 2007-03-09 21:27:00 · 1523 阅读 · 1 评论 -
再谈C/C++容易被遗忘的知识!(2)
对于大多数初学者来说,他们更注重程序的结果.的确.好的算法的前提一定是正确.所以对于他们很愿意去看一些基础教程.所以很多知识有的教程很少讲,有的教程基本不讲.象C++的容器.内置变量的直接初始化....... 代码优化就更被大多数初学者所忽略,毕竟能作出正确的结果对于他们是最大的希望.并没有考虑什么效率. 举2个例子, 有2个语句(如果有int x;)原创 2007-03-08 23:01:00 · 827 阅读 · 0 评论 -
从语句 char* p="test" 说起
从语句 char* p="test" 说起 我相信,使用C/C++多年的人对下面这个字符串赋值语句都不会陌生吧。 char* p = "test"; 同时,我也相信,各位在使用这种语句后吃过很多苦头也不少吧?只要你想利用指针p来改变字符串的内容,你的程序都会得到一个让你颜面尽失一个内存非法操作。比如,下面的这些语句:转载 2007-03-18 13:12:00 · 793 阅读 · 0 评论 -
C++ 虚函数 多态
C++ 虚函数 多态 1、什么是虚函数和多态虚函数是在类中被声明为virtual的成员函数,当编译器看到通过指针或引用调用此类函数时,对其执行晚绑定,即通过指针(或引用)指向的类的类型信息来决定该函数是哪个类的。通常此类指针或引用都声明为基类的,它可以指向基类或派生类的对象。多态指同一个方法根据其所属的不同对象可以有不同的行为(根据自己理解,不知这么说是否严谨)。举个例转载 2007-03-18 13:09:00 · 997 阅读 · 4 评论 -
VC编写DLL几种方法的简介.
可欣动态连接库最大的特点就是能节省磁盘空间.当多个进程共享同一个DLL的时候,内存中只有一个DLL的代码.通过映射来使各个进程得以调用.1.用VC建立一个WIN32 DLL我们利用VC编写DLL有几种方法.如果用VC建立一个WIN32 DLL 工程.那这个工程就应该只导出C++的类或全局变量.和全局函数.方法就是在CPP文件中编写你的代码,为每个需要导出的元素进行导出办法是增加如下语句原创 2007-09-25 01:07:00 · 3971 阅读 · 0 评论