导航

2012年4月16日

摘要: 在http://www.grex.org/上注册一个帐号,或者直接在linux终端里输入:ssh newuser@grex.org 然后根据提示操作就OK了。然后用ssh登录就可以了。 阅读全文

posted @ 2012-04-16 22:12 网名还没想好 阅读(241) 评论(0) 推荐(0) 编辑

摘要: 为什么要了解虚函数表了解虚函数表对理解C++实现多态的机制会有更深的了解,对对象的内存布局会有更好的认识。如要转载请注明作者和本url验证虚函数表的存在(C++中的struct和class实际上是一样的)C++中当一个类中存在virtual函数(虚函数)或者它的父类中存在虚函数,那么编译器就会为这个类生成虚函数表(virtual table),下面我用代码来验证这个事情。首先写一个classclass A{};cout<<sizeof(A)<<endl;输出结果1,就是说这个类占1个字节(具体为什么要占1个字节我也不太清楚,应该就这么设计的吧,有高手请告诉我为什么)。下 阅读全文

posted @ 2012-04-16 11:47 网名还没想好 阅读(348) 评论(0) 推荐(0) 编辑

摘要: 虚基类 在说明其作用前先看一段代码 class A { public: int iValue; }; class B:public A { public: void bPrintf(){cout<<"This is class B"<<endl;}; }; class C:public A { public: void cPrintf(){cout<<"This is class C"<<endl;}; }; class D:public B,public C { public: void dPrintf( 阅读全文

posted @ 2012-04-16 11:36 网名还没想好 阅读(265) 评论(0) 推荐(0) 编辑

摘要: const给人的第一印象就是定义常量。(1)const用于定义常量。 例如:const int N = 100;const int M = 200; 这样程序中只要用到 N、M 就分别代表为整型100、200,N、M 为一常量,在程序中不可改变。 但有人说他编程时从来不用const定义常量。我相信。但他是不懂得真正的编程艺术,用const定义常量不仅能方便我们编程而且能提高程序的清晰性。你是愿意看到程序中100、200 满天飞,还是愿意只看到简单清晰的N、M。相信有没有好处你慢慢体会。 还有人说他不用const定义常量,他用#define宏定义常量。可以。但不知道你有没有发现有时#define 阅读全文

posted @ 2012-04-16 11:23 网名还没想好 阅读(1135) 评论(0) 推荐(0) 编辑

摘要: 对比于C 语言的函数,C++增加了重载(overloaded)、内联(inline)、const 和virtual四种新机制。其中重载和内联机制既可用于全局函数也可用于类的成员函数,const 与virtual 机制仅用于类的成员函数。1.重载(overloaded)重载的理由:1:在C++程序中,可以将语义、功能相似的几个函数用同一个名字表示,即函数重载。这样便于记忆,提高了函数的易用性2:类的构造函数需要重载机制。因为C++规定构造函数与类同名构,造函数只能有一个名字。如果想用几种不同的方法创建对象该怎么办?别无选择,只能用重载机制来实现。所以类可以有多个同名的构造函数。重载的实现:它们是 阅读全文

posted @ 2012-04-16 11:19 网名还没想好 阅读(369) 评论(0) 推荐(1) 编辑

摘要: 多态性给我们带来了好处:多态使得我们可以通过基类的引用或指针来指明一个对象(包含其派生类的对象),当调用函数时可以自动判断调用的是哪个对象的函数。一个函数说明为虚函数,表明在继承的类中重载这个函数时,当调用这个函数时应当查看以确定调用哪个对象的这个函数。普通函数的处理:一个特定的函数都会映射到特定的代码,无论时编译阶段还是连接阶段,编译器都能计算出这个函数的地址,调用即可。虚函数的处理:被调用的函数不仅依据调用的特定函数,还依据调用的对象的种类。通常是由虚函数表(vtable)来实现的。虚函数表的结构:它是一个函数指针表,每一个表项都指向一个函数。任何一个包含至少一个虚函数的类都会有这样一张表 阅读全文

posted @ 2012-04-16 11:13 网名还没想好 阅读(905) 评论(0) 推荐(0) 编辑