64,636
社区成员
发帖
与我相关
我的任务
分享
class base
{
enum tp{..};
..};
class device1:public base
{
int a;
..
};
class device2:public base
{
char b;
...
};
void putmember(int a)=0;void putmember(Param p) { m = p.i; }
还可以这样覆盖的。学习了。
base *p=new device1;
((device1*) p)->a=1;
union Param {
int i;
char c;
float f;
double d;
....
};
class Base {
public:
void putmember(int a)=0;
void putmember(char b)=0;
};
class Derived1 : public Base {
int m;
public:
void putmember(Param p) { m = p.i; }
};
class Derived2 : public Base {
char m;
public:
int m;
void putmember(Param p){ m = p.c; }
};
class CBase
{//这个类只用于实现单根,不包含任何具体实现
};
class CDouble: public CBase
{
double m_dValue;
protected:
CDouble(){};
public:
CDouble(double d):m_dValue(d){};
virtual double Calculate(){return m_dValue;};
};
class CBoolean: public CBase
{
bool m_bValue;
protected:
CBoolean(){};
public:
CBoolean(bool b):m_bValue(b){};
virtual bool Calculate(){return m_bValue;};
};
class base
{
void putmember(int a)=0;
void putmember(char b)=0;
....
};
class device1:public base
{
int m;
void putmember(int a){m=a;}
void putmember(char b){}//不用纯虚函数
..
};
class devicee:public base
{
char n;
void putmember(int a){}
void putmember(char b){n=b;}
....
};
class CExpression
{
double m_value;
protected:
CExpression(){};//保留给派生类使用
public:
CExpression(double value):m_value(value){};
virtual double Calculate(){return m_value;};
};
typedef enum {
OP_ADD = 0,
OP_SUB = 1,
OP_MUL = 2,
OP_DIV = 3,
OP_NEG = 4,
...//你可以自己增加自己运算符
}OPERATORS;
class COperator :public CExpression
{
private:
CExpression * m_pLeft, * m_pRight;
OPERATORS m_op;
public:
//最多两个参数,如果是单目运算符,则right = NULL
COperator( OPERATORS op, CExpression * left, CExpression* right=NULL);
//根据m_op计算并返回值
double Calculate();
};