乱写的

本质上都是多态也是多态的本质(抽象)。

编译时类型安全检查的安全性和高效性;

与运行时动态加载的灵活性与相对不够安全(采用TDD来解决这种类型不安全);

 

反射:

利用类元数据信息运行时动态构造对象。

 

 

消息机制:

函数指针-->委托。。。。

好的,以下是一个简单的类似QQ宠物的代码,主要实现了宠物的基本功能,如喂食、玩耍、睡觉等。 ```c++ #include <QMainWindow> #include <QLabel> #include <QPushButton> #include <QVBoxLayout> #include <QHBoxLayout> #include <QTimer> class PetWidget : public QMainWindow { Q_OBJECT public: explicit PetWidget(QWidget *parent = nullptr) : QMainWindow(parent), m_hunger(50), m_energy(50), m_happiness(50) { // 设置宠物的基本属性 m_hungerTimer = new QTimer(this); connect(m_hungerTimer, &QTimer::timeout, this, &PetWidget::hungerTick); m_energyTimer = new QTimer(this); connect(m_energyTimer, &QTimer::timeout, this, &PetWidget::energyTick); m_happinessTimer = new QTimer(this); connect(m_happinessTimer, &QTimer::timeout, this, &PetWidget::happinessTick); // 创建界面 QWidget *centralWidget = new QWidget(this); QVBoxLayout *mainLayout = new QVBoxLayout(centralWidget); QLabel *label = new QLabel("My Pet", this); label->setAlignment(Qt::AlignCenter); mainLayout->addWidget(label); m_hungerLabel = new QLabel(this); m_hungerLabel->setAlignment(Qt::AlignCenter); updateHungerLabel(); mainLayout->addWidget(m_hungerLabel); m_energyLabel = new QLabel(this); m_energyLabel->setAlignment(Qt::AlignCenter); updateEnergyLabel(); mainLayout->addWidget(m_energyLabel); m_happinessLabel = new QLabel(this); m_happinessLabel->setAlignment(Qt::AlignCenter); updateHappinessLabel(); mainLayout->addWidget(m_happinessLabel); QHBoxLayout *buttonLayout = new QHBoxLayout(); QPushButton *eatButton = new QPushButton("Eat", this); connect(eatButton, &QPushButton::clicked, this, &PetWidget::eat); buttonLayout->addWidget(eatButton); QPushButton *playButton = new QPushButton("Play", this); connect(playButton, &QPushButton::clicked, this, &PetWidget::play); buttonLayout->addWidget(playButton); QPushButton *sleepButton = new QPushButton("Sleep", this); connect(sleepButton, &QPushButton::clicked, this, &PetWidget::sleep); buttonLayout->addWidget(sleepButton); mainLayout->addLayout(buttonLayout); setCentralWidget(centralWidget); // 启动计时器 m_hungerTimer->start(1000); m_energyTimer->start(1000); m_happinessTimer->start(1000); } private: int m_hunger; int m_energy; int m_happiness; QLabel *m_hungerLabel; QLabel *m_energyLabel; QLabel *m_happinessLabel; QTimer *m_hungerTimer; QTimer *m_energyTimer; QTimer *m_happinessTimer; void eat() { m_hunger += 10; updateHungerLabel(); } void play() { m_happiness += 10; m_energy -= 10; updateEnergyLabel(); updateHappinessLabel(); } void sleep() { m_energy += 10; updateEnergyLabel(); } void hungerTick() { m_hunger -= 1; updateHungerLabel(); } void energyTick() { m_energy -= 1; updateEnergyLabel(); } void happinessTick() { m_happiness -= 1; updateHappinessLabel(); } void updateHungerLabel() { m_hungerLabel->setText(QString("Hunger: %1").arg(m_hunger)); } void updateEnergyLabel() { m_energyLabel->setText(QString("Energy: %1").arg(m_energy)); } void updateHappinessLabel() { m_happinessLabel->setText(QString("Happiness: %1").arg(m_happiness)); } }; ``` 以上代码中,我们使用QT库创建了一个 `PetWidget` 类,继承自 `QMainWindow`。我们使用 `QLabel` 显示宠物的属性值,使用 `QPushButton` 实现喂食、玩耍、睡觉等操作。我们使用 `QTimer` 定时更新宠物的属性值,保证宠物的属性值会随着时间的推移而变化。同时,我们实现了喂食、玩耍、睡觉等操作的函数,根据不同的操作修改宠物的属性值。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值