
C++ programming
小桥or流水
默默地走在码农的路上。。。
展开
-
虚函数表
一般继承(无虚函数覆盖) 下面,再让我们来看看继承时的虚函数表是什么样的。假设有如下所示的一个继承关系: 请注意,在这个继承关系中,子类没有重载任何父类的函数。那么,在派生类的实例中,其虚函数表如下所示: 对于实例:Derive d; 的虚函数表如下: 我们可以看到下面几点:1原创 2014-09-05 22:01:45 · 535 阅读 · 0 评论 -
c++ primer -- 泛型算法
vector::const_iterator result = find(vec.begin(), vec.end(), search_value); 只要找到与给定值相等的元素,find 就会返回指向该元素的迭代器。如果没有匹配的元素,find 就返回它的第二个迭代器实参,表示查找失败。由于 find 运算是基于迭代器的,因此可在任意容器中使用相同的find 函数查找值。原创 2015-03-19 14:12:43 · 556 阅读 · 0 评论 -
【设计模式】单例模式
单例模式要注意以下几点:它有一个指向唯一实例的静态指针m_pInstance,并且是私有的;它有一个公有的函数,可以获取这个唯一的实例,并且在需要的时候创建该实例;它的构造函数是私有的,这样就不能从别处创建该类的实例。在单例类中定义一个静态成员变量,而它的唯一工作就是在析构函数中删除单例类的实例class CSingleton{private: CSingleton()原创 2015-04-10 14:33:08 · 454 阅读 · 0 评论 -
函数指针和函数对象
函数指针:是指向函数的指针变量,在C编译时,每一个函数都有一个入口地址,那么这个指向这个函数的函数指针便指向这个地址原创 2015-04-10 11:08:07 · 513 阅读 · 0 评论 -
拷贝构造函数和赋值操作符复载
拷贝构造函数其实也是构造函数,只不过它的参数是const的类自身的对象的引用。如果类里没有指针成员(该指针成员指向动态申请的空间),是没有必要编写拷贝构造函数的。拷贝构造函数常用的三种情况:(1)定义新对象,用已有对象初始化新对象(2)对象直接作为参数传递给函数(3)当函数中的局部对象被返回给函数调用class CExample{public : CExample原创 2015-04-10 16:00:40 · 643 阅读 · 0 评论 -
【设计模式】工厂模式
工厂模式属于创建型模式,大致可以分为三类,简单工厂模式、工厂方法模式、抽象工厂模式。听上去差不多,都是工厂模式。下面一个个介绍,首先介绍简单工厂模式,它的主要特点是需要在工厂类中做判断,从而创造相应的产品。当增加新的产品时,就需要修改工厂类。有点抽象,举个例子就明白了。有一家生产处理器核的厂家,它只有一个工厂,能够生产两种型号的处理器核。客户需要什么样的处理器核,一定要显示地告诉生产工厂。下面给出转载 2015-04-10 17:48:44 · 475 阅读 · 0 评论 -
c++ primer -- 顺序容器
(1)迭代器和迭代器范围vector和deque容器的迭代器提供额外的运算:+ - += -=,> ,>=,(2)顺序容器中添加元素所有容器都支持push_back操作;而insert则只在list,depue容器中使用(3)容器大小的操作:size():返回容器中的元素个数resize():调整容器的长度大小(4)容器的删除元素:erase():删除迭代器所指向原创 2015-03-15 22:39:35 · 550 阅读 · 0 评论 -
【设计模式】Observer模式
Observer观察者模式作用:观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象,这个主题对象在状态发生变化时,会通知所有观察者对象,使它们能够自动更新自己UML图:Subject类,可翻译为主题或抽象通知者,一般用一个抽象类或者一个借口实现。它把所有对观察者对象的引用保存在一个聚集里,每个主题都可以有任何数量的观察者。抽象主题提供一个借口,可以增加和删转载 2015-04-13 10:56:00 · 453 阅读 · 0 评论 -
虚函数的应用举例
使用动态指针就是为了表达一种动态调用的性质即当前指针指向哪个对象,就调用那个对象对应类的成员函数。那要怎么来解决的,这时虚函数就体现出了它的作用:#include #include class Graph{protected: double x; double y;public: Graph(double x,double y); void virtual showArea(原创 2015-04-13 22:20:28 · 934 阅读 · 0 评论 -
ctemplate模板
ctemplate解决的主要问题是将文字表达和逻辑分离开来:文字模板解决如何用合适的文字和形式来表示问题,而逻辑问题则由文字模板的调用者在源代码中完成。ctemplate大体上分为两个部分,一部分是模板,另一部分是数据字典。模板定义了界面展现的形式(V),数据字典就是填充模板的数据(M),你自己写业务逻辑去控制界面展现(C),典型的MVC模型。2、ctemplate模板中有四中标记,对应的原创 2015-07-28 15:16:00 · 824 阅读 · 0 评论 -
二进制文件的操作
标题:2. 数据文件时 限:1000 ms内存限制:10000 K总时限:3000 ms描述:已知一个文件中存放了10个整型数据,将他们排序后存入另一个文件。输入:存放了10个整型数据的二进制数据文件名(包含全路径)原创 2015-09-28 19:44:37 · 877 阅读 · 0 评论 -
南邮硕士研究生OOADP作业
应用面向对象技术分析一在职职工医疗保险管理系统,用来对职工的个人医保帐户进行管理,系统的需求为:1. 每个职工有一个唯一的帐号,记录该职工的帐上余额。个人每月交纳的保险金额为工资的2%,单位为个人每月交纳的保险金额为工资的7%。2. 每个职工有一个IC卡,有密码,并与职工的个人帐户相关联。每次就医后可凭卡支付医疗费用,IC卡可挂失、重发,如何时候都只有一张卡有效。3. 系统要记录每次交原创 2014-12-09 10:45:16 · 1103 阅读 · 0 评论 -
字符串的小程序练手
通过键盘输入一串小写字母(a~z)组成的字符串。请编写一个字符串压缩程序,将字符串中连续出席的重复字母进行压缩,并输出压缩后的字符串。压缩规则:1. 仅压缩连续重复出现的字符。比如字符串"abcbc"由于无连续重复字符,压缩后的字符串还是"abcbc".2. 压缩字段的格式为"字符重复的次数+字符"。例如:字符串"xxxyyyyyyz"压缩后就成为"3x6yz"示例 输入:“c原创 2014-12-10 11:23:59 · 736 阅读 · 0 评论 -
类模板-template
template是声明各模板的关键字,表示声明一个模板,模板参数可以是一个,也可以是多个。声明类模板要增加一行: template如template其中的类型参数名为虚拟的类型参数名,以后会被实际的类型名替代。如例子中的dataType将会被int,float,char等替代。原创 2014-09-21 09:40:24 · 1455 阅读 · 0 评论 -
循环队列
#include using namespace std;const int QueueSize = 100;class CirQueue{private: int data[QueueSize]; ///存放队列元素的数组 int front, rear; ///队头和队尾指针public: CirQueue() { front = rear = 0; } ///原创 2014-09-21 22:30:29 · 682 阅读 · 0 评论 -
两个栈共享同一存储空间
#include using namespace std;const int StackSize = 100;class BothStack{private: int data[StackSize]; ///存放两个栈的数组 int top1, top2; ///两个栈的栈顶指针,分别为各自栈顶元素在数组中的下标public: BothStack()原创 2014-09-21 22:04:26 · 4147 阅读 · 0 评论 -
多重继承中二义性的消除
类A派生B和C, 类D从B,C派生,如何将一个类A的指针指向一个类D的实例?解析:这道题实际上考查的是如何消除多重继承引起的向上继承二义性问题。程序代码如下所示: class A {}; class B : public A {}; class C : public A {}; class D : public原创 2014-08-16 18:11:42 · 1625 阅读 · 0 评论 -
vs2008 C++项目连接mysql数据库详解
这两天由于写程序需要,须将c++程序中的数据存储在mysql数据库中,因此在网上各种找资料,终于弄清楚了整个流程。今天抽出点时间整理,方便自己,同时和各位分享。有错误的地方,请积极批评指正!第一步:安装MySQL5.5(下载地址:http://dev.mysql.com/downloads/mysql/)这里给出安装MySQL5.1的流程图解,5.5安装类似。一、MySQL转载 2014-10-04 14:57:25 · 1030 阅读 · 0 评论 -
华为编码比赛(笨笨熊搬家打包篇,打牌,扑克牌排序)
1.笨笨熊搬家打包篇#include #include #include using namespace std; int comp(int a,int b) { return a>b; } int main() { int v,n,m=0,input,first,last; vector A; cin >原创 2014-11-02 15:12:15 · 904 阅读 · 0 评论 -
单链表的链接存储结构实现
#include using namespace std;class Node{public: int element; Node *next;};class List{private: Node *head;public: List();//无参构造函数 List(int a[], int n); //有参构造函数 ~List();//析构原创 2014-09-21 11:46:23 · 1018 阅读 · 0 评论 -
给出一段英文,统计单词出现的次数
#include #include #include #include using namespace std;int main(){ string filename; cin>>filename; ifstream input(filename,ios::in);//打开文件 if(input.fail()) { cout<<"打开文件失败,请检查输入是否正确!\n"原创 2014-12-01 13:53:14 · 2856 阅读 · 0 评论 -
求一个数的因数个数问题
#includeusing namespace std;#define MAX 500000bool a[MAX];int cnt;int plist[10000],pcount=0;int prime(int n){ int i; if((n!=2 && !(n%2)) || (n!=3 && !(n%3)) || (n!=5 && !(n%5)) || (n!=7 && !(原创 2014-12-01 17:58:15 · 2953 阅读 · 0 评论 -
华为机试练练手(c++代码)
输入一个整数,如12336544,或1750,然后从最后一位开始倒过来输出,最后如果是0,则不输出,输出的数字是不带重复数字的,所以上面的输出是456321和571。如果是负数,比如输入-175,输出-571。#include #include using namespace std;int main(){ string str; string str1; cin>>str;原创 2014-12-15 17:42:29 · 922 阅读 · 0 评论 -
扫描局域网内的其他计算机
本代码可以获取局域网内的其他计算机的名称和ip地址。如图所示:本地IP地址为:10.128.8.176.而通过程序枚举出如下的局域网内的计算机信息。对于这些计算机,在不联网的情况下,我通过ping的方式,可以与这些计算机ping通,说明这些计算机是真实存在在局域网的范畴内。核心代码:void CEnumHostsDlg::EnumHosts(CStringArray& list原创 2016-03-14 22:02:50 · 3906 阅读 · 0 评论