继承
class Animal
{
public:
int mAge;
virtual void speak()
{
cout<<"animal"<<endl;
}
};
class Sheep : public Animal
{
public:
string* mName;
Sheep(string name)
{
mName = new string("tom");
}
void speak()
{
cout<<"Sheep"<<endl;
}
};
class Tuo : public Animal
{
public:
void speak()
{
cout<<"Tuo"<<endl;
}
};
class SheepTuo : public Sheep, public Tuo
{
};
多态
class Calculator
{
public:
int mNum1;
int mNum2;
int getResult(string oper)
{
if("+" == oper)
{
return mNum1 + mNum2;
}else if("-" == oper)
{
return mNum1 - mNum2;
}else if("*" == oper)
{
return mNum1 * mNum2;
}else if("/" == oper)
{
return mNum1 / mNum2;
}
return 0;
}
private:
};
class AbstractCalculator
{
public:
int mNum1;
int mNum2;
virtual int getResult() = 0;
};
class AddCalculator : public AbstractCalculator
{
virtual int getResult()
{
return mNum1 + mNum2;
}
};
class SubCalculator : public AbstractCalculator
{
virtual int getResult()
{
return mNum1 - mNum2;
}
};
class MulCalculator : public AbstractCalculator
{
virtual int getResult()
{
return mNum1 * mNum2;
}
};
class DivCalculator : public AbstractCalculator
{
virtual int getResult()
{
return mNum1 / mNum2;
}
};
class AbstractDrinks
{
public:
virtual void Boil() = 0;
virtual void Brew() = 0;
virtual void PourInCup() = 0;
virtual void PutSomething() = 0;
void makeDrink()
{
Boil();
Brew();
PourInCup();
PutSomething();
}
};
class Coffee : public AbstractDrinks
{
virtual void Boil()
{
cout<<"Boil Coffee"<<endl;
}
virtual void Brew()
{
cout<<"Brew Coffee"<<endl;
}
virtual void PourInCup()
{
cout<<"PourInCup Coffee"<<endl;
}
virtual void PutSomething()
{
cout<<"PourInCup Coffee"<<endl;
}
};
class Tea : public AbstractDrinks
{
virtual void Boil()
{
cout<<"Boil Tea"<<endl;
}
virtual void Brew()
{
cout<<"Brew Tea"<<endl;
}
virtual void PourInCup()
{
cout<<"PourInCup Tea"<<endl;
}
virtual void PutSomething()
{
cout<<"PourInCup Tea"<<endl;
}
};
class Cpu
{
public:
virtual void cacl() = 0;
};
class Graphics
{
public:
virtual void disply() = 0;
};
class Memory
{
public:
virtual void storage() = 0;
};
class Computer
{
public:
Computer(Cpu* c, Graphics* g, Memory* m)
{
cpu = c;
gra = g;
mem = m;
}
void work()
{
cpu->cacl();
gra->disply();
mem->storage();
}
private:
Cpu* cpu;
Graphics* gra;
Memory* mem;
};
class IntelCpu : public Cpu
{
public:
virtual void cacl()
{
cout<<"IntelCpu"<<endl;
}
};
class IntelGraphics : public Graphics
{
public:
virtual void disply()
{
cout<<"IntelGraphics"<<endl;
}
};
class IntelMemory : public Memory
{
public:
virtual void storage()
{
cout<<"IntelMemory"<<endl;
}
};
class LenovoCpu : public Cpu
{
public:
virtual void cacl()
{
cout<<"IntelCpu"<<endl;
}
};
class LenovoGraphics : public Graphics
{
public:
virtual void disply()
{
cout<<"IntelGraphics"<<endl;
}
};
class LenovoMemory : public Memory
{
public:
virtual void storage()
{
cout<<"IntelMemory"<<endl;
}
};
void doSpeak(Animal& animal)
{
animal.speak();
}
void test02()
{
cout<<"size animal: "<<sizeof(Animal)<<endl;
}
void test03()
{
Calculator c;
c.mNum1 = 10;
c.mNum2 = 10;
cout<<c.mNum1<<"+"<<c.mNum2<<"="<<c.getResult("+")<<endl;
cout<<c.mNum1<<"-"<<c.mNum2<<"="<<c.getResult("-")<<endl;
cout<<c.mNum1<<"*"<<c.mNum2<<"="<<c.getResult("*")<<endl;
cout<<c.mNum1<<"/"<<c.mNum2<<"="<<c.getResult("/")<<endl;
}
void test04()
{
AbstractCalculator* ac = new AddCalculator;
ac->mNum1 = 100;
ac->mNum2 = 100;
cout<<ac->mNum1<<"+"<<ac->mNum2<<"="<<ac->getResult()<<endl;
delete ac;
ac = new SubCalculator;
ac->mNum1 = 100;
ac->mNum2 = 100;
cout<<ac->mNum1<<"+"<<ac->mNum2<<"="<<ac->getResult()<<endl;
delete ac;
ac = new MulCalculator;
ac->mNum1 = 100;
ac->mNum2 = 100;
cout<<ac->mNum1<<"+"<<ac->mNum2<<"="<<ac->getResult()<<endl;
delete ac;
ac = new DivCalculator;
ac->mNum1 = 100;
ac->mNum2 = 100;
cout<<ac->mNum1<<"+"<<ac->mNum2<<"="<<ac->getResult()<<endl;
delete ac;
}
void doWork(AbstractDrinks* abs)
{
abs->makeDrink();
delete abs;
}
void test05()
{
doWork(new Coffee);
cout<<"---------------"<<endl;
doWork(new Tea);
}
void test06()
{
Cpu* intelCpu = new IntelCpu;
Graphics* intelGra = new IntelGraphics;
Memory* intelMem = new IntelMemory;
Computer* computer = new Computer(intelCpu, intelGra, intelMem);
computer->work();
delete computer;
}
int main()
{
test06();
system("pause");
system("cls");
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?