Lightning[0GiNr]
百度空间 | 百度首页 
 
关于我
 

网名:Lightning
[0GiNr]
0GiNr Group Is Not Ring0

0GiNr 官方论坛:http://bbs.0GiNr.com/
0GiNr 的百度空间:http://hi.baidu.com/0GiNr
菜鸟一个。中国象棋爱好者。物理爱好者。计算机爱好者。
反病毒爱好者。VC编程爱好者。非高手。
正在学习程序算法及数据结构。
恕不接受任何木马、病毒、恶意软件的编写工作。
本BLOG所云VC皆指Visual C++ 6.0,高版本的使用VS代替或者注明版本

我的部分软件下载:
http://Aegisys.ys168.com/
Aegisys Lightning Storm 文件夹内。
我的软件列表:
正在更新:
KsSuperGraphEx 冰竹之影 V 4.000 Great!
KsMusicMonitor 音乐飞龙探云手 V 0.009 New!
foo_input_ksp_midi Foobar2000 MIDI插件 New!

暂停:

KsApiFireWall
V 0.271 New!

===================
停止更新、下载
KsIceProcess KsProcessMonitor KsSafetyCenter
KsSuperSword KsFileFinder KsCodeFilter

   
 
RSS订阅
 
   
 
最新评论
 
文章评论|照片评论


我记得cin<<好像要比printf差不少
 

不清楚. cin.get, cout.put 效率并不低.
 
 

iostream 就是一个菱形继承
 

RE农夫:偶的编辑器级别不够~~555
 
     
 
最近访客
 
 

pshpan

kittyacat

肥狼II

44670

痴心的小蚂蚁

istry

Greysign

hihkfans
     
 
留言板
 
92
不错不错,相当不错呀,静下心来写点东西感觉真好~加油!
2009-11-08 20:15| 回复
 
86
新疆这地真不赖,地大物博好气派。夜光杯中葡萄酒,天山南北舞起来。 欢迎朋友周日来...
2009-11-01 09:30| 回复
 
80
如今的孩子真了不得……才17…… 掩面……我都22了……
2009-10-27 10:42| 回复
 
79
带着祝福来朋友家坐坐,希望我的到来可以为朋友点亮一盏创业的灯…欢迎探寻我的成长之...
2009-10-26 11:31| 回复
 
74
我来踩你啦,一定要回踩哦...哈哈
2009-10-06 18:08| 回复
 
 
姓 名:    注册
网 址: (选填)
内 容:
验证码: 请点击后输入四位验证码,字母不区分大小写
      
   
 
 
文章列表
 
2009-11-22 21:32
功能减少了不少,广告也少了很多。
 
2009-11-15 16:44
首先需要说明的是,在实际的工程应用中,应该尽量拒绝使用菱形继承,因为这样很容易导致模糊调用。

那么,除了模糊调用外,菱形继承究竟会引发什么其他问题呢?我们先来看一个例子。
class A
{
public:
A(): m_a(2){}
public:
int m_a;
};

class B
{
public:
B() : m_b(3){}
public:
int m_b;
};
class C : public A, public B
{
public:
C() : m_c(4){}
public:
int m_c;
};

在代码中,类C从类A,B两个类中继承了两个成员m_a和m_b,所以类C的内存分布如下:
offset     member
0            m_a
4            m_b
8            m_c
大小共12字节。这样的安排是很明晰的,如果在main函数中调用如下代码:
C c;
A* p = static_cast<A*>(&c);
B* t = static_cast<B*>(&c);
那么p指向了offset 0处,而t指向了offset 4处,这时使用p和t两个指针都不会出错,程序正常执行。

但是菱形继承完全打乱了这个计划。如果我们做如下修改:
class CBase
{
public:
CBase() : m_base(1){}
public:
int m_base;
};
class A : public CBase
.....
class B : public CBase
....
这样问题就来了,m_base成员是如何安排的?
我们打开VC进行调试,会发现类C这时会存在两个m_base成员,标识符分别为C::A::m_base和C::B::m_base,类C的大小一下子膨胀到20字节!这可不是我们想要的。
编译器这样做的原因可以从我们main函数中的两个cast转换中得到答案:如果不实现两个m_base成员,那么将无法满足p和t两个指针有意义。
或许有人说,虚继承不是可以共享m_base成员吗?那好,我们看看虚继承是怎么做的:
class A : public virtual CBase
.....
class B : public virtual CBase
现在运行程序,在Watch中查看C的内存分布,C::A::m_base显示为1,而C::B::m_base变成了无法访问,p和t指针能成功地引用到m_base。虽然从内存分布上好像说不通,但看起来问题似乎得到了解决。
然而事情远没有想象中的那么简单,现在计算sizeof(C),结果让人大跌眼镜:竟然是24!类C的大小不但没有减少,反而增加了4字节!

我们来看Memory窗口中显示了什么:这里的类c的内存分布,&c = 0x0012FF68

注意红笔勾住的部分,这些数据是哪儿来的?这些数据对p指针和t指针对m_base成员的定位有什么关系?
看起来,这两数据像是一个地址,那么这个地址处放着什么?还是Memory窗口告诉了我们答案:



至于得到引用p->m_base和t->m_base的具体处理过程,这个问题就留给大家吧~~
 
2009-11-14 22:39
这样的确能发现不少BUG,虽然也会顺带把STL的一些东西也报成警告。

另外,Opera Turbo好像不能用了。
 
2009-11-11 21:41
今天晚上还将有暴雪……
 
2009-11-10 18:41
下了一尺多……今天我们这儿的坡上扒着一排车……
明天去学校看来要坐11路了……

2009-11-11 PS:一晚上又下了10cm,被困了……
 
2009-11-08 20:59
前些天写程序时想到的,叙述如下:
现有纯字母组成的单词A和单词B,设计一个函数,验证这两个单词是否是同一单词(不区分大小写)。
试求较的解法。

示例:
Check("winDow", "Window") == TRUE;
Check("PspCreateProcess", "PsCreateProcess") == FALSE;
Check("FireFox", "FireFox") == TRUE;

我的方法在下面,其实中间的思想大家基本上都想到了。
bool Equal(const char* A, const char* B)
{
for(; *A != '\0' && *B != '\0' && ((*A - *B) & 0x1F) == 0; A++, B++);
return *A == '\0' && *B == '\0';
}
 
2009-11-01 21:59
愿钱老一路走好。

正文:
嗯,新加了一些菜单。
感谢FC的FTP支持,现将三个软件的新下载地址放这儿:
KsSuperGraphEx: http://www.0ginr.com/lightning/KsSuperGraphEx.exe
含帮助文件版:http://www.0ginr.com/lightning/KsSuperGraphEx.rar

Foo_input_ksp_midi: http://www.0ginr.com/lightning/foo_input_ksp_midi1.002Beta.rar
KsMusicMonitor: http://www.0ginr.com/lightning/KsMusicMonitor.exe

 
2009-10-31 08:38
论坛里有同学问到IB提到过的那个比较神奇的变量交换函数:
void exchange(int& a, int& b)
{ assert(&a != &b); a^=b; b^=a; a^=b; }
这样为什么能达到交换的目的,其实我们写开来就明白了。

注意XOR运算有一个特性,当一个数a和b异或后,再异或b又会得a,那么结合异或的结合律,有:

a' = a ^ b;
b = b ^ a' = b ^ (a ^ b) = a;
a = a' ^ b = a ^ b ^ b ^ (a ^ b) = b;

显然完成了交换。
 
2009-10-27 22:12
最近发现在我BLOG的留言板里有很多根本不认识的人发的留言,打开她/他/它们的BLOG,发现都是一个“我叫XX,发现某某注册某威客网站后怎么怎么能赚钱,下面是收入截图”等等的诈骗陷阱。这种打着威客旗号,域名为hxxp://www.weikeh.com (注意weike后面的h)网站,明眼人皆能识破,可惜还是有那么多人看了这些BLOG后上当~~~真无语了#
留言灭之。
 
2009-10-24 20:46
给我的第一感觉是和前几十年所说的“第四代编程语言”有些像~~
第二感觉是好像需要语法的详尽分析。
百度说再也不紧跟GOOGLE的步伐了,因为GOOGLE说他们要开发操作系统。
框的局限是还要用户输入,改成语音识别就更好了。
语音操控技术好像已经有了。

看了半天以后没有发现有真正创新的东西。
期待框计算的面世。
 
     
 
 
冰竹之影 V 4.007
 
 
 
 
     
 
Foobar midi 插件
 
 
 
 
     
 
KsMusicMonitor
 
 
 
     
 
好友最新文章
 
     
 
订阅我的空间
 
已有人次访问本空间
 
订阅RSS  什么是RSS?

您也想拥有这样的空间?请点此申请。
     


©2009 Baidu