摘要: 转载请标明出处,原文地址:http://blog.csdn.net/hackbuteer1/article/details/7883531一、虚函数的工作原理 虚函数的实现要求对象携带额外的信息,这些信息用于在运行时确定该对象应该调用哪一个虚函数。典型情况下,这一信息具有一种被称为 vptr(virtual table pointer,虚函数表指针)的指针的形式。vptr 指向一个被称为 vtbl(virtual table,虚函数表)的函数指针数组,每一个包含虚函数的类都关联到 vtbl。当一个对象调用了虚函数,实际的被调用函数通过下面的步骤确定:找到对象的 vptr 指向的 vtbl,然后 阅读全文
posted @ 2013-09-27 23:47 0弓虽 阅读(403) 评论(0) 推荐(0) 编辑
摘要: 方式一:将函数的定义写在类定义内部class Sales_item{public: double Sales_item::avg_price() const { if(units_sold) return revenue/units_sold; else return 0; } //private: string isbn; unsigned units_sold; double revenue; ... 阅读全文
posted @ 2013-09-15 13:23 0弓虽 阅读(358) 评论(0) 推荐(0) 编辑
摘要: 封装是一种将低层次的元素组合起来形成新的、高层次实体的技术。例如,函数是封装的一种形式:函数所执行的细节行为被封装在函数本身这个更大的实体中;类也是一个封装的实体:他代表若干成员的聚集,大多数类类型隐藏了实现该类型的成员。 封装隐藏了内部元素的实现细节,例如可以调用一个函数但不能访问他所执行的语句,其主要有点在于:避免类内部出现无意的,可能破坏对象状态的用户级错误;使得在修改类的实现时只要保持类的接口不变,就无需改变用户级代码。因此,封装是有用的。 阅读全文
posted @ 2013-09-15 00:53 0弓虽 阅读(345) 评论(0) 推荐(0) 编辑
摘要: 把一个字符串倒序,如“abcd”倒序后变为“dcba”#include #include #include #include #include #include #include #include #include #include using namespace std;int main(){ char *res = "dlrow olleh"; char *des = new char[strlen(res)+1]; //char *des = (char*)malloc(strlen(res)+1); char *s = &res[strlen(res)-1] 阅读全文
posted @ 2013-09-04 20:23 0弓虽 阅读(349) 评论(0) 推荐(0) 编辑
摘要: 简介 数据库范式在数据库设计中的地位一直很暧昧,教科书中对于数据库范式倒是都给出了学术性的定义,但实际应用中范式的应用却不甚乐观,这篇文章会用简单的语言和一个简单的数据库DEMO将一个不符合范式的数据库一步步从第一范式实现到第四范式。范式的目标 应用数据库范式可以带来许多好处,但是最重要的好处归结为三点: 1.减少数据冗余(这是最主要的好处,其他好处都是由此而附带的) 2.消除异常(插入异常,更新异常,删除异常) 3.让数据组织的更加和谐… 但剑是双刃的,应用数据库范式同样也会带来弊端,这会在文章后面说到。什么是范式 简单的说,范式是为了消除重复数据减少冗余数据,从而让数据库内的数据更好的组织 阅读全文
posted @ 2013-01-09 20:51 0弓虽 阅读(105) 评论(0) 推荐(0) 编辑