![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C/C++
iteye_14216
这个作者很懒,什么都没留下…
展开
-
c++ copy constructor VS java clone
今天有一同学问我,java怎么没有拷贝构造函数呢,java的clone就是c++的拷贝构造函数么?下面我分析一下这个问题:而java中的clone是c++中的拷贝构造函数么?事实上并不是这样的,java是在语言层面对prototype模式的支持。java事实上很少需要拷贝,除非你需要显示的得到对象的拷贝。因为java中从来都不会有显示的对象,对象都是由引用来持有,所以无论是...2008-02-29 16:16:47 · 140 阅读 · 0 评论 -
getopt test
试了一下getopt,代码如下:[code="cpp"]#include#include#includeint main(int argc, char** argv) { int c; char * filename = NULL; char * input_path = NULL; char * output_path = NULL...原创 2010-07-22 20:30:59 · 78 阅读 · 0 评论 -
C++继承访问控制
C++允许在派生类对继承的方法访问控制重新定义,可以放松或者添加更严格的限制。这点和Java是不同的,Java不能对继承过来的成员添加更严格的限制,因为这样会"违反Liskov替换原则"。而C++的多态是依赖于指针和引用的(当然Java也是reference),而指针或者引用编译时的访问权限检查是检查指针或引用类型的,所以C++采取了一种看似不够直观的设计:使用基类指针和引用访...2010-12-19 15:37:59 · 90 阅读 · 0 评论 -
No local goto--longjmp and setjmp
c语言提供了两个函数可以用来非local的跳转:#include <setjmp.h>int setjmp(jmp_buf envbuf );void longjmp(jmp_buf env, int val); setjmp保存当前的系统堆栈到envbuf中,第一次调用返回0,以后当我们调用longjmp时返回longjmp设置的val,但是不可以返回0(va...2010-05-14 09:49:14 · 75 阅读 · 0 评论 -
C++、面向对象随想
最近使用C++,用起来总感觉不是很顺畅,主要不是对语法和stl的不是熟,而是使用面向对象方法时,有点局促,放不开手脚。C++从c发展而来,从根上继承了c的一些特性,对象、引用、指针并存,很难去取舍,有时因为没有完美的方法而感到很纠结。使用对象就很难避免拷贝,使用指针、引用如果持有的是栈中的对象就很难保证生命周期一致而导致句柄悬空,堆中动态申请的对象,就容易发生内存泄露,谁申请谁就释放的准则并不...原创 2010-10-17 23:19:44 · 86 阅读 · 0 评论 -
C++类的作用域
形参表和函数体处于类作用域中,函数返回类型不一定在类作用域中,如果函数在类定义体之外定义,则用于返回类型的名字在类作用域之外,否则在类作用域内。[code="cpp"]class Screen{public:typedef std::string::size_type size;//not need to specific the screen::inline size g...原创 2010-10-07 20:00:16 · 265 阅读 · 0 评论 -
C++ explicit
C++ explicit用来修饰构造函数,表明是显式的。与显式对应的就是隐式的,没有加explicit修饰。隐式构造函数是可以发生隐式转换的(一个参数,或者多个参数中只有一个参数没有默认值)。[code="cpp"]class Day{public: Day(int day):m_day(day){}private: int m_day;};Day a = ...2010-09-26 23:07:05 · 80 阅读 · 0 评论 -
c语言的split
leven同学提到一个简单的功能"12 22 33 22 11"中的数字放到一个数组中,但不知道数字的个数。使用指针一个一个判断是否是数字还是空白,不太爽。而java中的split可以很爽的处理之。c语言中sscanf似乎是不错的选择,于是使用下面方法,试验成功。[code="cpp"]#include#include#include#define MAX 20#def...2009-05-21 22:58:03 · 190 阅读 · 0 评论 -
c++指针与引用
引用与指针的区别: 常常有人问引用与指针的区别,可能是指针和引用在功能上的相似,而是他们混淆这两个概念,现在总结以下二者的区别,希望大家能彻底弄清这两个概念根本性的差别: 引用,一个变量的别名,为什么引入别名呢?原因是我们想定义一个变量,他共享另一个变量的内存空间,使用别名无疑是一个好的选择。变量是什么?是一个内存空间的名字,如果我们给这个内存空间在起另外一个名字,那就是能...2007-04-09 23:18:37 · 85 阅读 · 0 评论 -
放假了,n长时间没有用过c++的class了,回顾一下.
1、你的类需要构造函数么?对于一个复杂的类,我们要隐藏掉复杂的细节,而让用户看到一个简洁的界面,构造函数对于隐藏内部的工作方式非常重要,因为他设定了整个程序的初始状态,我们只把需要由用户设定的数据,作为参数,让他们来初始化为恰当的值而其他我们都有一个默认的设置,这就隐藏掉了内部的细节。我们甚至需要思考这个类是能产生单个实例还是多个,这就需要我们思考是否应该将构造函数私有。...2007-04-09 22:57:45 · 78 阅读 · 0 评论 -
对以前扫雷游戏功能进一步完善的版本.
程序代码:[code]#include #include #include "resource.h" // 菜单资源头文件#define SHADOW_WIDTH1 1 //阴影宽度1#define SHADOW_WIDTH2 2 //阴影宽度2#define SHADOW_WIDTH3 3 //阴影宽度3#define ID_TIMER 1 //定...2007-04-09 18:21:00 · 91 阅读 · 0 评论 -
Windows程序之滚动的正弦曲线(一)
Windows程序之滚动的正弦曲线(一) [code]#include #include #define ID_TIMER 1#define NUM 1000#define STEP 10#define TWOPI (2 * 3.14159)LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM) ;...2007-04-09 17:48:33 · 166 阅读 · 0 评论 -
MFC下实现图形学之多边形扫描转化填充算法
//*************************//获取点中y坐标最大值//*************************int CPolygonFillView::GetMaxY(){ int result = points[0].y; for(int i = 1; i < count; i++) if(result < points[i].y) ...2007-04-09 17:33:39 · 1896 阅读 · 0 评论 -
MFC下实现图形学之Hermite、Bezier曲线的绘制
[code]//*******************************************************//捕捉鼠标左键按下消息,获得两个起始控制点的坐标//*******************************************************void CDrawCurvesView::OnLButtonDown(UINT nFla...2007-04-09 17:21:26 · 1617 阅读 · 0 评论 -
今天用Windows API写的扫雷程序
[code]#include #include #include #include "resource.h" // 菜单资源头文件#define SHADOW_WIDTH1 1 //阴影宽度#define SHADOW_WIDTH2 2 #define SHADOW_WIDTH3 3 #define BORDER 8 //边界的宽度#define ...2007-04-09 17:18:14 · 190 阅读 · 0 评论 -
C++中的hash Map
标准std中只有map,是使用平衡二叉树实现的,查找和添加的复杂度都为O(log(n)),没有提供hash map,gnu c++提供了hash_map,是一个hash map的实现,查找和添加复杂度均为O(1)。[code="cpp"]#include #include #include using namespace std; using namespace...2010-07-30 09:53:20 · 185 阅读 · 0 评论