- 分享
类与对象
- @ 2025-8-22 15:06:51
#include <iostream>
#include <string>
using namespace std;
class Dog {
private:
// 私有成员变量
string name;
int age;
static int dogCount; // 静态成员变量
public:
// 构造函数重载
Dog() : name("无名"), age(0) {
dogCount++;
cout << name << "诞生了!当前小狗总数: " << dogCount << endl;
}
Dog(string n) : name(n), age(0) {
dogCount++;
cout << name << "诞生了!当前小狗总数: " << dogCount << endl;
}
Dog(string n, int a) : name(n), age(a) {
dogCount++;
cout << name << "诞生了,今年" << age << "岁!当前小狗总数: " << dogCount << endl;
}
// 析构函数
~Dog() {
dogCount--;
cout << name << "离开了我们...当前小狗总数: " << dogCount << endl;
}
// 普通成员函数
void bark() {
cout << name << ": 汪汪!" << endl;
}
void introduce() {
cout << "我是" << name;
if(age > 0) {
cout << ",今年" << age << "岁";
}
cout << "!" << endl;
}
// 静态成员函数
static int getDogCount() {
return dogCount;
}
// 公有函数访问私有成员
void setName(string n) {
name = n;
}
string getName() {
return name;
}
};
// 初始化静态成员变量
int Dog::dogCount = 0;
int main() {
cout << "=== 小狗世界模拟程序 ===" << endl;
cout << "初始小狗数量: " << Dog::getDogCount() << endl << endl;
// 创建不同的小狗对象
Dog dog1;
Dog dog2("小白");
Dog dog 3 ("小黑", 2)
;
cout << endl << "=== 小狗自我介绍 ===" << endl;
dog1.introduce();
dog2.introduce();
dog3.introduce();
cout << endl << "=== 小狗叫一声 ===" << endl;
dog1.bark();
dog2.bark();
dog3.bark();
cout << endl << "当前小狗总数: " << Dog::getDogCount() << endl;
cout << endl << "=== 给无名小狗起名字 ===" << endl;
dog1.setName("小黄");
cout << "现在第一只小狗叫: " << dog1.getName() << endl;
dog1.introduce();
cout << endl << "=== 程序结束,小狗们离开 ===" << endl;
// 当main函数结束时,所有对象会自动销毁,析构函数会被调用
return 0;
}
0 条评论
目前还没有评论...