摘要: 因为静态绑定的函数,在编译时已明确了所要调用的函数,所要运行时没有决定调用正确函数的开销 动态绑定的开销: C++中都保存了一个类方法的特定表,并在查找正确函数时使用该表。 需要注意的是:找到正确的函数并不涉及链表或表进行任何查找,这是瞬间直接地查找过程。 表中储存了所有方法的地址,调用动态绑定的函 阅读全文
posted @ 2017-03-20 11:14 郑哲 阅读(91) 评论(0) 推荐(0) 编辑
摘要: 动态绑定的支持————虚函数 只有函数前带有virtual的才是虚函数,其他函数不是虚函数 一旦在类中声明成员函数是虚函数,那么它(成员函数)将在所有的子类中保留其动态绑定的性质 例如,Print在TStudent中都是虚函数。 注意:virtual关键字只允许在声明中使用,不允许在成员函数定义中使 阅读全文
posted @ 2017-03-20 11:03 郑哲 阅读(83) 评论(0) 推荐(0) 编辑
摘要: 正常情况下,若基类和派生类中有相同函数,当通过派生类调用时,调用派生类中的实现; 此处的displayOutput函数 void DisplayOutput(const TPerson& aPerson) 根据多态置换原则,调用引用派生类时,依然视作一个aPerson; 所有调用aPerson::p 阅读全文
posted @ 2017-03-20 10:51 郑哲 阅读(98) 评论(0) 推荐(0) 编辑
摘要: 1.继承让设计者和程序员无需付出重新编译的代价,只需重新链接,即可扩展和增强软件功能。 比如TStudent是从TPerson派生而来的。我们就不需要重写PrintMaillingLabel函数。 这样我们无需修改现有代码,便可以在当前系统中加入新类。 在许多实现中,不用停止允许程序,便可将新类添加 阅读全文
posted @ 2017-03-16 22:19 郑哲 阅读(194) 评论(0) 推荐(0) 编辑
摘要: 1 #include "TStudent.h" 2 3 enum EStudentStatus //大学生系别不同,用枚举分类 4 { 5 eFullTime, ePartTime, eExchange 6 }; 7 8 //每学期,每名大学生允许注册的课程数目 9 const short MAX_COURSES_FOR_STUDENT = 5;//短整型常量 1... 阅读全文
posted @ 2017-03-16 22:09 郑哲 阅读(161) 评论(0) 推荐(0) 编辑
摘要: 虽然PrintMaillngLabel函数要一个TPerson类对象,我们仍然可以传递TPerson的派生类对象给它,因为任何TPerson的派生类都is-a(“是一个”)TPerson。 阅读全文
posted @ 2017-03-16 21:25 郑哲 阅读(166) 评论(0) 推荐(0) 编辑
摘要: Problem Description Now I think you have got an AC in Ignatius.L's "Max Sum" problem. To be a brave ACMer, we always challenge ourselves to more diffi 阅读全文
posted @ 2017-03-15 16:20 郑哲 阅读(403) 评论(0) 推荐(0) 编辑
摘要: 1 #include 2 using namespace std; 3 4 5 int i, j, m; 6 int *d;//沿高速公路n个快餐店的位置 7 int n, k;//饭店的数量,仓库的数量 8 int cost[202][202]; 9 int dis[205][205]; 10 int temp; 11 12 13 void madecost(... 阅读全文
posted @ 2017-03-15 16:19 郑哲 阅读(189) 评论(0) 推荐(0) 编辑
摘要: 1 #include 2 using namespace std; 3 4 int n; //主题的数量 5 int L, C; //每节课的时间,常量C 6 int *time; //每个主题需要的时间 7 int *minLec; //主题1~i(1=0; j--) 32 { 33 sum += time[j ... 阅读全文
posted @ 2017-03-15 15:35 郑哲 阅读(153) 评论(0) 推荐(0) 编辑
摘要: const char* a; 常量指针,通过指针a不能修改a所指地址的值; char *b; b=a;是错误的,const char*不能赋值给char*类型 但是可以通过另外的方法取赋值 b = (char*)a; *b = 'b'; cout << *b << endl; 强制类型转换,这样就可 阅读全文
posted @ 2017-03-14 22:44 郑哲 阅读(121) 评论(0) 推荐(0) 编辑