所谓的“平台”
来源:互联网 发布:主机域名的正确写法 编辑:程序博客网 时间:2024/05/17 01:39
2006-06-20 21:46
近来在工作中常听到一“平台”,后来一打听才明白,原来所谓的“平台”是一个封装好了的基类库。在实现一些新的功能时,你不要去改动原来的代码,只要把自已写好的与那个带有main的文件一同编译就可以了,其实其并没有什么高深的技术,只是这种方案是一种不错的解决方案,所以我把这个“平台”模拟了一下,我这个“平台”是由一个基类构成的,在这个类的定义文件中,含有一个主函数main,我在这里实现了两个功能,分别是A,B,它们主要是打印出各自的信息。
//// A.h
#ifndef A_H
#define A_H
#include "base.h"
class A :public base
{
public:
A(){}
virtual ~A(){ cout<<"A destructor"<<endl; }
public:
virtual void print(int i);
};
#endif
//// A.cpp
#include "A.h"
A a;
void A::print(int i)
{
cout<<"A::print("<<i<<")"<<endl;
}
//// B.h
#ifndef B_H
#define B_H
#include "base.h"
class B :public base
{
public:
B(){}
virtual ~B(){}
public:
virtual void print(int i);
};
#endif
//// B.cpp
#include "B.h"
B a;
void B::print(int i)
{
cout<<"B::print("<<i<<")"<<endl;
}
//// base.h
#ifndef BASE_H
#define BASE_H
#include <iostream>
using namespace std;
class base
{
public:
base();
virtual ~base();
public:
virtual void print(int i);
};
#endif
//// base.cpp
#include "base.h"
base* g_base;
int main(void)
{
g_base->print(100);
return 0;
}
base::base()
{
g_base=this;
}
base::~base()
{
cout<<"base destructor"<<endl;
}
void base::print(int i)
{
cout<<"base::print("<<i<<")"<<endl;
}
//// makefile
CC=g++
all:A B clean
B:base.cpp base.h B.o
${CC} -o B base.cpp B.o
A:base.cpp base.h A.o
${CC} -o A base.cpp A.o
B.o:B.h B.cpp
${CC} -c B.cpp
A.o:A.h A.cpp
${CC} -c A.cpp
clean:
rm *.o
这里我们就在这个“平台”上建立了两个EXE文件,同样我们可以在不改去base的前提下,增加一个新的派生类,编译时也不需要去改动它。例如,我们要增加一个C的功能。我们写好类后,只要在makefile文件中新增一行
C:base.cpp base.h C.o
${CC} -o C base.cpp C.o
C.o:C.h C.cpp
${CC} -c C.cpp
就可以了,
近来在工作中常听到一“平台”,后来一打听才明白,原来所谓的“平台”是一个封装好了的基类库。在实现一些新的功能时,你不要去改动原来的代码,只要把自已写好的与那个带有main的文件一同编译就可以了,其实其并没有什么高深的技术,只是这种方案是一种不错的解决方案,所以我把这个“平台”模拟了一下,我这个“平台”是由一个基类构成的,在这个类的定义文件中,含有一个主函数main,我在这里实现了两个功能,分别是A,B,它们主要是打印出各自的信息。
//// A.h
#ifndef A_H
#define A_H
#include "base.h"
class A :public base
{
public:
A(){}
virtual ~A(){ cout<<"A destructor"<<endl; }
public:
virtual void print(int i);
};
#endif
//// A.cpp
#include "A.h"
A a;
void A::print(int i)
{
cout<<"A::print("<<i<<")"<<endl;
}
//// B.h
#ifndef B_H
#define B_H
#include "base.h"
class B :public base
{
public:
B(){}
virtual ~B(){}
public:
virtual void print(int i);
};
#endif
//// B.cpp
#include "B.h"
B a;
void B::print(int i)
{
cout<<"B::print("<<i<<")"<<endl;
}
//// base.h
#ifndef BASE_H
#define BASE_H
#include <iostream>
using namespace std;
class base
{
public:
base();
virtual ~base();
public:
virtual void print(int i);
};
#endif
//// base.cpp
#include "base.h"
base* g_base;
int main(void)
{
g_base->print(100);
return 0;
}
base::base()
{
g_base=this;
}
base::~base()
{
cout<<"base destructor"<<endl;
}
void base::print(int i)
{
cout<<"base::print("<<i<<")"<<endl;
}
//// makefile
CC=g++
all:A B clean
B:base.cpp base.h B.o
${CC} -o B base.cpp B.o
A:base.cpp base.h A.o
${CC} -o A base.cpp A.o
B.o:B.h B.cpp
${CC} -c B.cpp
A.o:A.h A.cpp
${CC} -c A.cpp
clean:
rm *.o
这里我们就在这个“平台”上建立了两个EXE文件,同样我们可以在不改去base的前提下,增加一个新的派生类,编译时也不需要去改动它。例如,我们要增加一个C的功能。我们写好类后,只要在makefile文件中新增一行
C:base.cpp base.h C.o
${CC} -o C base.cpp C.o
C.o:C.h C.cpp
${CC} -c C.cpp
就可以了,
- 所谓的“平台”
- 所谓的....
- 所谓的曾经,就是所谓的幸福
- 所谓的悲剧
- 所谓的丑陋
- 所谓的新闻自由
- 所谓的爱
- 所谓的专栏作家
- 所谓的会计信息系统
- 所谓的大学生活
- [转]所谓的同学聚会
- 所谓的清白
- 所谓的科研
- cnBeta的所谓“言论自由”
- 所谓的云计算
- ibtais所谓的级联
- 所谓的WorkFlow
- 所谓的微博
- php.MVC系列教程
- 让我们荡起双浆-小歌星
- 人不是为自已而活着
- 做事,为人,生活
- 这周是这个月的最后一周
- 所谓的“平台”
- 改变Edit的光标
- a day、 a week
- 蜗牛与黄鹂鸟-欢乐儿童
- makefile in GTK
- GTK中的数据类型与C语言的数据类型
- 随风的记忆
- 将无题进行到底
- 同一首歌-毛阿敏