C++
文章平均质量分 57
shanlingwei
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
螺旋队列
/* 螺旋队列 设1的坐标是(0,0),的方向向右为正,y方向向下为正,例如,7的坐标为(-1,-1),2的坐标为(0,1)。 编程实现输入任意一点坐标(x,y),输出所对应的数字。 43 44 45 46 47 48 49 42 21 22 23 24 25 26 41 20 7 8 9 10 27 40 19 6...原创 2009-04-29 09:34:02 · 175 阅读 · 0 评论 -
修练8年C++面向对象程序设计之体会
2 良好的编程风格 内功深厚的武林高手出招往往平淡无奇。同理,编程高手也不会用奇门怪招写程序。良好的编程风格是产生高质量程序的前提。2.1 命名约定 有不少人编程时用拼音给函数或变量命名,这样做并不能说明你很爱国,却会让用此程序的人迷糊(很多南方人不懂拼音,我就不懂)。程序中的英文一般不会太复杂,用词要力求准确。匈牙利命名法是Microsoft 公司倡导的[Maguir...原创 2009-05-03 10:18:22 · 113 阅读 · 0 评论 -
修练8年C++面向对象程序设计之体会
2.3 new、delete 与指针 在C++中,操作符new 用于申请内存,操作符delete 用于释放内存。在C语言中,函数malloc 用于申请内存,函数free 用于释放内 存。由于C++兼容C 语言,所以new、delete、malloc、free都有可能一起使用。new 能比malloc 干更多的事,它可以申请对象的内存,而malloc 不能。C++和C语言中的指针威...原创 2009-05-03 10:20:49 · 115 阅读 · 0 评论 -
修练8年C++面向对象程序设计之体会(完结篇)
2.5 其它建议 (1)不要编写一条过分复杂的语句,紧凑的C++/C 代码并不见到能得到高效率的机器代码,却会降低程序的可理解性,程序出错误的几率也会提高。 (2)不要编写集多种功能于一身的函数,在函数的返回值中,不要将正常值和错误标志混在一起。 (3)不要将BOOL 值TRUE 和FALSE 对应于1 和0 进行编程。大多数编程语言将FALSE定义为0,任何非0 值都是TR...原创 2009-05-03 10:23:52 · 202 阅读 · 0 评论 -
实例成员变量和静态成员变量
所有的对象都是实例成员变量。它们的最大特色是:如果所属的对象没有被创建,它们也就不存在。如果在类的外部使用它,需要先创建一个对象,然后通过"对象名.变量名"来访问。在类的内部,实例成员方法也可以直接访问实例成员变量。 不同的对象,拥有不同的实例成员变量,它们互不干扰。【例1】 不同对象的实例成员变量使用示例。//-----------文件名ins...2009-05-04 10:32:40 · 238 阅读 · 0 评论 -
内联函数和宏
第一部分:宏为什么要使用宏呢?因为函数的调用必须要将程序执行的顺序转移到函数所存放在内存中的某个地址,将函数的程序内容执行完后,再返回到转去执行该函数前的地方。这种转移操作要求在转去执行前要保存现场并记忆执行的地址,转回后要恢复现场,并按原来保存地址继续执行。因此,函数调用要有一定的时间和空间方面的开销,于是将影响其效率。而宏只是在预处理的地方把代码展开,不需要额外的空间和时间...原创 2009-05-04 10:55:37 · 115 阅读 · 0 评论 -
虚函数覆盖
1。覆盖函数,即在子类中用相同的函数名和签名重写父类的方法,虚函数,在子类中用相同的函数名和签名重写父类的方法(前面有virtual关键字)。如下 class Father { public: void FunctionA() con...2009-05-04 21:34:09 · 242 阅读 · 0 评论 -
派生类的3中继承方式
1. 公有继承(public) 公有继承的特点是基类的公有成员和保护成员作为派生类的成员时,它们都保持原有的状态,而基类的私有成员仍然是私有的。 2. 私有继承(private) 私有继承的特点是基类的公有成员和保护成员都作为派生类的私有成员,并且不能被这个派生类的子类所访问。 3. 保护继承(protected)...2009-05-05 14:39:48 · 139 阅读 · 0 评论 -
c++中虚函数和多态性1
虚函数联系到多态,多态联系到继承。所以本文中都是在继承层次上做文章。没了继承,什么都没得谈。 下面是对C++的虚函数这玩意儿的理解。 什么是虚函数(如果不知道虚函数为何物,但有急切的想知道,那你就应该从这里开始) 简单地说,那些被virtual关键字修饰的成员函数,就是虚函数。虚函数的作用,用专业术语来解释就是实现多态性(Polymorphism),多态性是将接口...原创 2009-05-05 15:11:14 · 109 阅读 · 0 评论 -
虚函数2
虚函数为了重载和多态的需要,在基类中是由定义的,即便定义是空,所以子类中可以重写也可以不写基类中的函数!纯虚函数在基类中是没有定义的,必须在子类中加以实现,很像java中的接口函数!虚函数引入原因:为了方便使用多态特性,我们常常需要在基类中定义虚函数。class Cman{public: virtual void Eat(){……}; void Mo...原创 2009-05-05 15:15:19 · 109 阅读 · 0 评论 -
如何输出_tmain中的argv[]
作者:Tuuzed(土仔) 版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本声明。http://www.cppblog.com/tuuzed/archive/2008/02/23/43153.html 使用过VS2005中VC++的大侠们应该对_tmain不陌生。是的,_tmain是Microsoft自己弄出来的东西,关于它的问题网上有一堆...2010-04-19 10:17:51 · 220 阅读 · 0 评论 -
【转】stdafx.h、stdafx.cpp的作用
http://hi.baidu.com/ouyang80/blog/item/d9a28f4e23bc3bcfd0c86a35%2Ehtmlstdafx.h、stdafx.cpp是干什么用的?为什么我的每一个cpp文件都必须包含stdafx.h?Windows和MFC的include文件都非常大,即使有一个快速的处理程序,编译程序也要花费相当长的时间来完成...2010-04-19 10:39:47 · 151 阅读 · 0 评论 -
C++中头文件(.h)和源文件(.cpp)都应该写些什么zz
头文件(.h): 写类的声明(包括类里面的成员和方法的声明)、函数原型、#define常数等,但一般来说不写出具体的实现。 在写头文件时需要注意,在开头和结尾处必须按照如下样式加上预编译语句(如下):#ifndef CIRCLE_H#define CIRCLE_H//你的代码写在这里#endif 这样做是为了防止重复编译,不这样做就有可能出错。 ...2010-04-30 16:53:18 · 6243 阅读 · 0 评论 -
ON_COMMAND ON_MESSAGE ON_NOTIFY区别与联系
ON_COMMAND是菜单和工具栏项处理消息的宏 ON_MESSAGE是处理自定义消息的宏ON_NOTIFY 是控件向其父窗口发送消息处理的宏 对这几个消息的理解要先了解一下Window消息的背景。在Windows3.1里,控件会将mouse, keybord等等的消息通知它的父窗口, 使用的消息就只有WM_COMMAND, 事件种类和控件ID被包含在wParam中, 控件的句柄包含在...原创 2010-05-07 16:36:37 · 124 阅读 · 0 评论 -
变量定义与声明的区别
我们在程序设计中,时时刻刻都用到变量的定义和变量的声明,可有些时候我们对这个概念不是很清楚,知道它是怎么用,但却不知是怎么一会事,下面我就简单的把他们的区别介绍如下: 变量的声明有两种情况: (1) 一种是需要建立存储空间的(定义、声明)。例如:int a在声明的时候就已经建立了存储空间。 (2) 另一种是不需要建立存储空间的(声明)。例如:extern int a其中变量a是...原创 2010-08-19 13:21:40 · 138 阅读 · 0 评论 -
堆和栈的理论知识
3.1申请方式 stack: 由系统自动分配。 例如,声明在函数中一个局部变量 int b; 系统自动在栈中为b开辟空间 heap: 需要程序员自己申请,并指明大小,在c中malloc函数 如p1 = (char *)malloc(10); 在C++中用new运算符 如p2 = (char *)malloc(10); 但是注意p1、p2本身是在栈中的。 3.2 ...原创 2010-08-19 13:29:43 · 170 阅读 · 0 评论 -
修练8年C++面向对象程序设计之体会
1.3 虚函数与多态 除了继承外,C++的另一个优良特性是支持多态,即允许将派生类的对象当作基类的对象使用。如果A 是基类,B 和C 是A 的派生类,多态函数Test 的参数是A 的 指针。那么Test 函数可以引用A、B、C 的对象。示例程序如下:class A{public:void Func1(void);};void Test(A *a){a->...原创 2009-05-03 10:15:51 · 146 阅读 · 0 评论 -
修练8年C++面向对象程序设计之体会2
1.2 继承与组合 如果A 是基类,B 是A 的派生类,那么B 将继承A 的数据和函数。示例程序如下:class A{public:void Func1(void);void Func2(void);};class B : public A{public:void Func3(void);void Func4(void);};// Exam...原创 2009-05-03 10:13:57 · 127 阅读 · 0 评论 -
c基础
1.怎么不用中间变量直接实现 数值交换?假设a b 不等a = a^bb = b^aa = a^b首先肯定异或是满足交换律的。由于a=a^b,这里的a有两层意思,所以我用c来表示a^b的值。而出现的a,都表示没有发生改变前的。a = a^b // 这个相当于a=c。这在我的约定下没什么意义,只是表示a舍弃了a的值。而用于存c的值。b = b^a // 这在我...2009-04-29 09:55:42 · 405 阅读 · 0 评论 -
main主函数执行完毕后,是否可能会再执行一段代码?
main主函数执行完毕后,是否可能再执行一段代码??5 C x$ v- G9 A# K5 S2 y* I" M书上说使用atexit函数注册一个函数.有一段代码:, R* v. @4 {% L$ ^#include <iostream.h>1 |) s$ f/ _8 D! d( h/ K1 _#include <stdlib.h>. A$ E. ?% ...2009-04-29 14:22:27 · 244 阅读 · 0 评论 -
预处理指令
1. #define 首先请看以下程序: #include <stdio.h> #define PERCENT 0.1 int main(void) { int income = 4000; printf("%.2f", PERCENT ...原创 2009-04-29 14:38:07 · 140 阅读 · 0 评论 -
#define定义一个量和const定义的常量有什么区别?
根本的一点,就是#define定义的其实是一个常数的名字,就是说你可以把这个名字等价于常数使用,在编译时会被编译器替换为该常数。之所以这么做,仅仅是为了提高可读性,但是安全性不能得到保证。 出于安全性的考虑,c++引入了const定义。当然这仅仅是const的功能之一。使用const,你可以定义一个不能修改其值的变量,也就是可以作为一个常量来使用了。当然,这个量与10...2009-04-29 14:50:54 · 294 阅读 · 0 评论 -
sizeof的使用
第一个例子: char* ss = "0123456789";sizeof(ss) 结果 4 ===》ss是指向字符串常量的字符指针sizeof(*ss) 结果 1 ===》*ss是第一个字符char ss[] = "0123456789";sizeof(ss) 结果 11 ===》ss是数组,计算到\0位置,因此是10+1sizeof(*ss) 结果 1...2009-04-29 15:16:28 · 140 阅读 · 0 评论 -
内联函数和宏
C++中函数前面加关键字 inline ,表示该函数是内敛函数。 inline int Fun(int x) { return ((x > 5) && (x < 10)) ? x : 0; }注意此时头文件要用名字空间形式#include <iostream>using namespace std;...2009-04-29 19:20:11 · 90 阅读 · 0 评论 -
指针1
指针学习不好关键是概念不清造成的,说的简单点就是书没有认真看,指针的学习犹如人在学习饶口令不多看多学多练是不行的,下面是两个很经典的例子,很多书上都有,对于学习的重点在于理解*x和x的理解,他们并不相同,*x所表示的其实就是变量a本身,x表示的是变量a在内存中的地址,如果想明白可以输出观察cout<<*x"|"x;,当定义了int*x;后对x=&a的理解的问题。...2009-04-29 19:33:47 · 99 阅读 · 0 评论 -
指针2
指针是一个特殊的变量,它里面存储的数值被解释成为内存里的一个地址。 要搞清一个指针需要搞清指针的四方面的内容:指针的类型,指针所指向的类型,指针的值或者叫指针所指向的内存区,还有指针本身所占据的内存区。让我们分别说明。 先声明几个指针放着做例子: 例一: (1)int*ptr; (2)char*ptr; ...2009-04-29 19:49:31 · 89 阅读 · 0 评论 -
指针3
如果上例中,ptr是被减去5,那么处理过程大同小异,只不过ptr的值是被减去5乘sizeof(int),新的ptr指向的地址将比原来的ptr所指向的地址向低地址方向移动了20个字节。 总结一下,一个指针ptrold加上一个整数n后,结果是一个新的指针ptrnew,ptrnew的类型和ptrold的类型相同,ptrnew所指向的类型和ptrold所指向的类型也相同。ptrnew...2009-04-29 20:19:11 · 122 阅读 · 0 评论 -
指针3
从格式上看倒是与通过指针访问结构成员的不正规方法的格式一样。 所有的C/C++编译器在排列数组的单元时,总是把各个数组单元存放在连续的存储区里,单元和单元之间没有空隙。但在存放结构对象的各个成员时,在某种编译环境下,可能会需要字对齐或双字对齐或者是别的什么对齐,需要在相邻两个成员之间加若干个 "填充字节",这就导致各个成员之间可能会有若干个字节的空隙。 所以,在例...2009-04-30 09:14:52 · 107 阅读 · 0 评论 -
指针与引用
一 概括指针和引用,在C++的软件开发中非常常见,如果能恰当的使用它们能够极大的提高整个软件的效率,但是很多的C++学习者对它们的各种使用情况并不是都了解,这就导致了实际的软件开发中经常会内存泄漏,异常抛出,程序崩溃等问题。对于C和C++的初学者,那更是被它们搞的迷迷糊糊。本篇作为[深入C++]系列的第一节,我们就带领大家把指针和引用这个基本功练好。二 指针指针,指针的定义是什...原创 2009-04-30 09:51:09 · 132 阅读 · 0 评论 -
指针函数和函数指针
【函数指针】 在程序运行中,函数代码是程序的算法指令部分,它们和数组一样也占用存储空间,都有相应的地址。可以使用指针变量指向数组的首地址,也可以使用指针变量指向函数代码的首地址,指向函数代码首地址的指针变量称为函数指针。1.函数指针定义函数类型 (*指针变量名)(形参列表);“函数类型”说明函数的返回类型,由于“()”的优先级高于“*”,所以指针变量...原创 2009-04-30 21:02:22 · 85 阅读 · 0 评论 -
指针数组和数组指针
其实,C/C++等编程语言之所以难懂,是因为,中国人特别是有点文化的人,素来喜欢用简化语。就象某年春晚相声中,将简化语大做批判,其中“上海吊车厂的人员”简称为“上吊的”一样。指针数组和数组指针,简化的象术语一样。C/C++本来就没有那么多的术语,人为增加术语,只会使C/C++更加晦涩难懂。直接称呼全称,估计问题就解决了: 用于存储指针的数组、指向数组的指针 ...2009-04-30 21:17:42 · 114 阅读 · 0 评论 -
指针的指针
一. 回顾指针概念:早在本系列第二篇中我就对指针的实质进行了阐述。今天我们又要学习一个叫做指向另一指针地址的指针。让我们先回顾一下指针的概念吧!当我们程序如下申明变量:short int i;char a;short int * pi;程序会在内存某地址空间上为各变量开辟空间,如下图所示。内存地址→6 7 8 9 10 11 ...原创 2009-04-30 21:38:23 · 171 阅读 · 0 评论 -
new/delete 与malloc/free 的区别
由于编程的习惯,动态管理内存的时候总是用new/delete,malloc/free很少使用,两者之间的区别就不是很清楚了。1. 本质区别malloc/free是C/C++语言的标准库函数,new/delete是C++的运算符。对于用户自定义的对象而言,用maloc/free无法满足动态管理对象的要求。对象在创建的同时要自动执行构造函数,对象在消亡之前要自动执行析构函数。由于m...原创 2009-05-02 21:16:42 · 154 阅读 · 0 评论 -
error C2440 “static_cast” 无法从“void (__thiscall CPppView )(void)”转换为“LRESULT (__t...
不能转换void (_thiscall CMainFrame::*)(void)to LRESULT (__thiscall CWnd::* )(WPARAM,LPARAM)2010-05-13 11:35开发平台由VC6.0升级至VS2005,需要将原有的项目迁移,可能碰到类似错误:error C2440: 'static_cast' : cannot convert from 'void (_...原创 2010-09-05 20:27:20 · 796 阅读 · 0 评论
分享