自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(97)
  • 收藏
  • 关注

原创 VPTR与构造函数和继承

    C++中类的成员函数默认情况下是non-virtual,即被调用时为静态绑定。        至少包含一个virtual成员函数的类,都有一个VTABLE——虚函数映射表,表中的每项对应类中一个virtual成员函数的函数体地址。相应的该类的每个对象在为其分配存储空间时,编译器会额外的为每个对象附加一个指针VPTR,该指针指向该对象所属类的VTABLE。    一定要明确概念,VTABLE

2007-09-11 20:03:00 2358 2

原创 几个需要清晰理解的概念

1  名称覆盖    子类若定义了与基类成员名称相同的成员,则基类成员在子类中会被覆盖。这里要理解的是C++的名称掩盖规则(name-hiding rules)是很简单的:只看名称,不区别类型。    此外,如果基类中存在某个成员函数的若干个重载版本,而子类也定义了同名函数(参数类型与返回值是否一致都不重要),则基类所有版本的重载函数都会被覆盖。    例如,下面例子中基类的成员x和 foo()都

2007-09-09 22:47:00 1484

原创 三种继承方式与三种访问权限的相互组合

        对基类进行继承时,三种继承方式下,基类的三种访问权限在子类中会有如何的变化这个问题,本科时上C++这门课的时候曾仔细的分析并弄得挺清楚,后来时间久了、用的也不多,慢慢的又变得心里不太有谱了。这次接着准备面试的契机,又重新仔细分析了一番,留个案底,以免再犯糊涂。三种访问权限    public:可以被任意实体访问    protected:只允许子类及本类的成员函数访问    pri

2007-09-09 22:04:00 9347 1

原创 转型操作的中的一个陷阱

    今天看《Effective C++ 3rd》中的第27款时看到的:         "关于强制转型的一件有趣的事,是很容易写出看起来似是而非(在其它语言中也许是对的)的代码。例如,许多应用程序框架要求 derived classes中的virtual member function要首先调用 base class(的对应函数。假设我们有一个 Window base class(基类)

2007-09-08 23:55:00 1413 3

原创 for循环体中定义的变量的生存期

     在for的循环体中定义的non-static对象,其生存期仅限于一次循环迭代,即在本次循环结束时,对象会被自动销毁。    试验代码如下:#include iostream>using namespace std;class A...{public:    A()...{cout"in ctor of A"endl;}    A(A&)...{cout"in copy ctor 

2007-09-08 23:19:00 5651 1

原创 local static对象和non-local static对象在初始化时机上的差异

    C++中的static对象是指存储区不属于stack和heap、"寿命"从被构造出来直至程序结束为止的对象。这些对象包括全局对象,定义于namespace作用域的对象,在class、function以及file作用域中被声明为static的对象。其中,函数内的static对象称为local static 对象,而其它static对象称为non-local static对象。    这两者在

2007-09-08 06:38:00 7572

原创 由一道面试题想到的

注:近日同学拿着《程序员面试宝典》这本书中的一道面试题来跟我讨论题目大意如下:    int i =1;    j=(i++)*(i++);    k=(++i)*(++i);       则j=?,k=?本猪看了一阵恶心,服了,国内的教材和考试、面试怎么总喜欢鼓捣这些不入流的trick?以本题为例,所谓的trick根本就是错误!根据C++标准的规定,这样的语句属于Undefine

2007-09-06 10:44:00 2298 1

原创 linux若干实用命令

#统计磁盘空间的占用情况du -s * | sort -nr > $HOME/space_report.txt#进行“更新"复制,即只对新增和修改日期更新的文件执行复制操作cp -u        # 显示当前目录下最近更新的10个条目ls -lt | head    # 统计并按降序显示当前目录下所有条目所占的磁盘空间du -h | sort -nr# 显示当前目录及其子目录中包含的文件数fin

2007-09-05 00:41:00 985

原创 bash 杂记

I/O 重定向:“>”和“>>"的区别在于前者导致overwrite,而后者则导致append。一个命令的标准输出和标准输入都可以被重定向,而且顺序并不产生影响。bg(shell内置命令)——可将进程设为后台进程echo $PATH ——显示环境变量中的路径export PATH=$PATH:directory——可用于添加shell的搜索路径cd、pwd都属于shell的内置命令可在shell中

2007-09-05 00:40:00 1167

翻译 UTF-8 and Unicode FAQ for Unix/Linux

UTF-8 and Unicode FAQ for Unix/Linux作者 Markus Kuhn 原文地址:http: //www.cl.cam.ac.uk/~mgk25/unicode.html译者:Love.Katherine,2007-8-30译文地址:http://blog.csdn.net/lovekatherine/archive/2007/08/30/1765

2007-08-30 20:20:00 19048 1

原创 简单测试你的C学的如何

printf("%d",sizeof("hello");这行代码的输出为几? 6? 恭喜,你对C中数组与指针之间的关系把握的很清楚。5? ft,你大脑在这瞬间短路了吧。4?抱歉,你该好好读读《C专家编程》这本书。那么printf(%d",sizeof("hello/0")的输出又是多少?当然是7了。 

2007-08-25 16:31:00 1470 1

原创 浅析C++的构造函数,拷贝构造函数和赋值运算符

 一.首先通过下面的测试程序,粗略的感知一下这三个函数分别在什么情况下被调用 #include using namespace std;class T{public:  T() { cout"dafault constructor"endl;}  T(const T & t) {cout"copy constructor"endl;}  void operator =(const T 

2007-08-21 23:03:00 5595 1

原创 const&volatile 与函数重载

首先要明确的概念:const&volatile关键字,可以用于实现函数重载。然而事情并不是像这句话看起来这么简单。首先,对于采用传值方式的参数,const &volatile 关键字无法区分参数类型,不具备实现函数重载的能力。如:void func (int a );void func  (const int a);这两个函数声明会被编译器视为重复声明。     其次,对于采用指针和引用这两种

2007-08-13 04:08:00 1670 1

原创 Java与C++在构造函数中调用虚函数时的区别

    别人问了我一个问题:若基类有一个虚函数init(),被构造函数调用,而派生类override了init(),同样在其构造函数中调用之,那么在创建一个派生类对象时,init()显然会依次被基类和派生类的构造函数调用,那么,这两次调用的分别是什么版本的init()?    我原以为按照OO的思想,在C++和Java中都应该是如下情况:构造函数中的虚函数不是真正的虚函数,而会调用当前版本的函数。

2007-07-26 10:30:00 3347

原创 读书摘要—《Thinking in C++ 2rd:Vol 2》

第七章 异常处理     通过使用C++提供的异常处理机制:     1.    编写异常处理代码不再是一项枯燥的工作,而且不会与正常情况下的代码混在一起。     2.    程序运行时的错误不允许被忽略。     C++异常处理机制所提供的优势之一就是允许程序员将面临的任务集中在一个地点解决,而在另外一个地点处理可能出现的错误。     异常处理理论中存在两种基本模型:Terminati

2007-06-09 12:28:00 1218

原创 C/C++中 const的不同含义

     在C中const所表示的意思是变量对应的值是不可修改的;然而这个小小的保证也只是看起来如此,程序员完全可以通过强制类型转换,随意修改cosnt变量对应的内存位置的值。    在C++中const表达了双重意味:常量&不可修改。前者保证对所有使用到标识符地方,自动用对应的常值进行替换;后者则保证除非使用const_cast去除const属性,否则任何对const变量的修改都被视为非法操作。

2007-06-09 11:09:00 1434

原创 异常机制与析构函数

以下时一段关于C++异常机制的示例代码:在有异常抛出的情况下,C++会负责自动析构已创建的对象,如果在析构函数中又抛出异常(此时还未进入当前异常的处理函数),则运行时系统会调用terminate(),终止程序。#include iostream>#include cstdlib>#include exception>using namespace std;void new_terminat

2007-06-09 10:37:00 811

原创 Reference

C++中 的引用在涉及到初始化和参数传递时,也必须满足了类似C中指针参数传递时的要求:     右侧具备的限定符,都必须在左侧出现。所以,下面的代码都是存在问题,无法通过编译的:    int & a=1;    void f( int & x) ...{;}    f(1);需要修改为如下才能通过编译       const int & a=1;    void f( c

2007-06-09 10:15:00 750

原创 constructor的细节之处

 #include iostream>using namespace std;class Who...{public:  static Who * NewWho()  ...{     cout"calling constructor"endl;     return (new Who() );  }  void test()...{ Who();};private:  Who() ...

2007-06-09 10:03:00 847

原创 const关键字的internal linkage属性

     当将const关键字用于声明某个常量时,该标识符自动具备internal linkage属性,即只对相同文件内的函数可见,对其他文件中的函数是不可见的。这可以通过如下的示例程序证明    //const1.cpp#include iostream>using namespace std;const int a=1;void funcA()...{   cout"cout int 

2007-06-09 09:37:00 1224

原创 《Thinking in Java 4th》1~13章读书摘要

    java中,动态绑定是默认行为。     当组合(composition)动态发生时,通常被称为聚合。     single-rooted 对象层次使得GC的实现变得简单很多。     java只使用动态内存分配。     在语言级别支持并发所带来的特性之一就是程序员无须考虑物理上究竟是一个还是多个CPU。     脚本语言如(javascript)能解决客户端编程中80%的问题

2007-05-17 19:20:00 1602

原创 读书摘要—C++编程思想第二版

第一章 对象的简介    汇编语言对底层机器进行了很小程度的抽象描述。在它之后出现的许多“指令式"(imperative)编程语言(例如Fortran,BASIC和C)则 是对汇编语言的抽象描述。与汇编语言相比,这些语言有巨大的进步;然而它们所提供的抽象依然要求程序员从计算机,而不是要解决的问题的角度来进行思考。    面向对象语言(OOP)允许程序员从问题而不是计算机的角度来思考。访问控制(

2007-05-10 20:38:00 2650

原创 读书摘要—C++:The Complete Reference

第二章 表达式    C++兼容C子集(目前为C89)中的5种基本数据类型:分别为char、int、float、double和void。    C++在此基础上又增加了bool和wchar_t这两种基本数据类型。    关于标准对于数据类型的规定,最重要的是要理解C和C++都仅规定了每种数据类型的最小表示范围,而不是它的字节长度。    C中标识符可以是任意长度,对于具备外部链接(exte

2007-05-04 14:22:00 2412

原创 Ubuntu Feisty(7.04)中与acroread相关的问题

         从Edgy升级到Feisty后,很郁闷的事情是发现所有的Feisty源中都没有acroread这个包,搜索了一下,据说是Adobe改变了acroread的license,使得其redistribution出现了障碍。    没有acroread真是感觉很不方便,怎么解决呢?    很简单,找一个edgy的源,安装acroread即可,或者到下面的地址下载.deb包自行安装   

2007-04-28 19:47:00 983

原创 Ubuntu Feisty(7.04)配置小技巧

1.让退格键在Firefox中执行“后退”的功能    转换到Linux中,使用Firefox浏览网页时感到很不方便的一点就是退格键并没有如同在Windows中一样执行“后退”的动作。    可以通过以下方法解决该问题:      A。在 Firefox 地址栏输入“about:config”,并回车;    B。在 Filter 中输入“browser.backspace_action”,将其

2007-04-28 19:14:00 916

原创 Ubuntu 7.04 (feisty)下的VirtualBox使用全体验

    就如同我暗恋Katherine一般,接触Linux的时间越久,就越发的难以自拔。遗憾的时,某些原因导致我每天必须不情愿的离开Linux,而返回Window。         第一.实验室的很多消息是在QQ群中发布的,由于腾讯的垃圾政策,所有Linux下的QQ客户端现在都无法登录QQ。     第二.我的机器上安装了打印机HP Deskjet 3743,并共享之。在使用7.04 beta时

2007-04-28 02:28:00 1810

原创 《C陷阱与缺陷》价值所在(ZZ)

以下内容摘自Chian-pub上该书译者对网友评论的回复《C陷阱与缺陷》价值所在——兼答两位网友(上)高巍([email protected])openlinux与flier两位网友对《C陷阱与缺陷》一书提出了个人的宝贵见解。对译者来说,读者应该是自己的老师和朋友,老师的指教与朋友的批评,自然值得聆听。openlinux网友认为该书“在书店翻了一下,感觉没什么深度,看这本书的人应该属于,刚读完《C语言程序

2007-04-24 17:40:00 1550

原创 读书摘要——《凌波微步-软件开发警戒案例集》

从硬盘中翻出来的,似乎是半年前读过此书,看了看自己当时做的摘要,感觉有些价值,就在blog上留个副本吧。p15.  "将void,int,float等基本数据类型通过typedef重新命名,可以在最大程度上保证代码的可移植性——例如从16位程序至32位程序的移植问题即可通过此方法简单解决。   例如WIN32 SDK中大量出现的UINT ,DWORD等定义均属此列。  "p18.  "匈牙利命名法

2007-04-24 17:31:00 2003

原创 海滩上原来最少有多少个桃子

    题目:海滩上有一堆桃子,五只猴子来分。第一只猴子把这堆桃子凭据分为五份,多了一个,这只猴子把多的一个扔入海中,拿走了一份。第二只猴子把剩下的桃子又平均分成五份,又多了一个,它同样把多的一个扔入海中,拿走了一份,第三、第四、第五只猴子都是这样做的,问海滩上原来最少有多少个桃子?     思路:    设最后一个猴子拿了t0个桃子,    倒数第二个拿了t1=(5*t0+1)/4个    ……

2007-04-16 16:54:00 4274

原创 C语言中的整型提升(integral promotion)

K&R C中关于整型提升(integral promotion)的定义为: "A character, a short integer, or an integer bit-field, all either signed or not, or an object of enumeration type, may be used in an expression wherever an inte

2007-04-16 02:39:00 14276 7

转载 C语言中可变参数的用法(ZZ)

C语言中可变参数的用法(author:kevintz) 我们在C语言编程中会遇到一些参数个数可变的函数,例如printf() 这个函数,它的定义是这样的:     int printf( const char* format, ...);  它除了有一个参数format固定以外,后面跟的参数的个数和类型是 可变的,例如我们可以有以下不同的调用方法:     printf("

2007-04-15 09:20:00 1252

原创 简要分析C中结构的位域成员

    C/C++提供了一个内嵌的特征来访问字节中的为,即位域。位域很有用,因为:    1)如果存储空间受限,可以在一个字节中存储多个布尔变量(真/假)。    2)某些设备传输被编码为一个字节中的为的状态信息。    3) 某些加密程序需要访问字节中的位。    C/C++使用基于结构的方法来访问位。事实上,位域是结构成员的特殊类型,它以位(bit)为单位定义域的长度。    位域定义的一般形

2007-04-14 22:49:00 2977

翻译 Byte and Bit Order Dissection(解析字节序和比特序)

  Byte and Bit Order Dissection 作者:Kevin He,2003-09-02 原文地址:http://www.linuxjournal.com/article/6788  译者:Love. Katherine,2007-04-14译文地址:http://blog.csdn.net/lovekatherine/archive/2007/

2007-04-14 17:01:00 6344

原创 菜鸟折腾Solairs

    1。shell中按退格健显示”^H",而不起删除字符的作用,让我很不适应,改之!     方法一:执行命令 stty erase      方法二:将默认的shell改为bash,这样不仅退格键可正常使用,命令历史和自动补全功能也找回来了,多好。       编辑/etc/passwd文件,将/bin/sh 改为 /bin/bash,重新登录用于,哈哈,还是bash用的舒服。    2

2007-04-12 13:37:00 1193

原创 Solaris 10开启SSH服务

    近日受老板之命,不得不在一台废弃的服务器上装个Solaris 10 。出于对Linux的喜爱,我对这个目前最正宗的UNIX操作系统之一很自然的带有好感,最初也想趁这个机会接触下传说中的UNIX 。     然而安装后确实大失所望:略显不友好的安装流程,安装完毕后丑陋的桌面环境,以及连命令补全功能都不具备的shell,天啊,这就是最纯粹的UNIX之一?我不由的怀念起Linux,就如刚接触L

2007-04-11 22:54:00 9277 3

原创 一个简单的数值比较问题

#include int main(void){        int i = 0xaabbccdd;        char *p = (char *)&i;        if (p[0] == 0xdd)                printf("equal ");        else                printf("not equal ");        r

2007-04-11 09:35:00 1138

原创 C语言的细节(不定期更新)

1.字符串换行c语言中,所有的空格、注释、TAB、换行都可以任意写,但是字符串中不可以。如果要换行,就像这样printf("a very very very very""long string");这个是C89以后才支持,老的风格是printf( "a very very / very long line");2 pow函数pow()的返回类型为double,在对整

2007-04-11 09:03:00 1315 1

原创 魔鬼存在于细节—标准库函数fgetc()

 #include stdio.h>int fgetc(FILE * stream);" fegtc() 函数从输入stream中返回当前位置的下一个字符,并且将文件的位置指示符加1,并将读取的字符按照unsigned char 形转换为整数以作为返回值。fgetc()在读取到文件的末尾时,返回值为EOF。”值得注意的细节是,既然fgetc()的功能是从文件中读取字符(char),

2007-04-11 04:47:00 2767 1

原创 刚发现C语言中数组还可以这么初始化

在水木的CProgramming版看到的:char str1[32];char str2[32]=...{0};char str2[32]=...{1};在上述三种数组初始化方式中:   数组str1中的32个元素的值为未指定的随机值;   数组str2中,32个元素的值均为0 ;   数组str3中,str3[0]的值为1,其余31个元素的值为0;以下是引用NetMD网友的解释:

2007-04-11 04:16:00 1760

原创 面试题:找出永远说真话的人

看到的一道面试题,不知是出自何处,挺有意思的。“有5个人,其中一个永远说真话,另外4个则在真话和假话中交替,即这次说真话,下次就说假话,反之亦然;现在要求你问两个问题,然后找出谁是那个永远说说真话的人。问题的要求是每次只能问单个人而不是全体,另外,那4个交替说真假话的人可以选择如何回答第一个问题。”这个题目其实就是一堆逻辑判断,只要思维不混乱,仔细分析各种可能性,方法还是不难得出的:第一次提问:任

2007-04-08 14:01:00 2871

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除