一、给与与派生:面向对象的基石仁科百华资料
在 C++ 的编程寰球中,给与与派渴望制就像是一座大厦的基石,为面向对象编程(OOP)奠定了坚实基础。它们不仅是代码复用的关键妙技,更是构建复杂软件系统的巨大器具。
给与,浅显来说,等于一个类(派生类)不错赢得另一个类(基类)的属性情切序。这一机制与履行活命中的给与主张访佛,比如子女给与父母的某些特征。在 C++ 里,通过给与,诱惑者无需重新开动编写代码,就能快速构建具有丰富功能的新类。举例,咱们界说一个 “Person” 类行动基类,其中包含 “name”(姓名)和 “age”(年齿)等基本属性:
TypeScript
取消自动换行复制
classPerson {
public:
string name;
int age;
voiddisplayInfo() {
cout << "Name: " << name << ", Age: " << age << endl;
}仁科百华资料
};
然后,咱们不错派生出 “Student” 类,它不仅领有 “Person” 类的通盘属性情切序,还能新增属于我方的零星属性,如 “studentID”(学号)和 “grades”(得益):
TypeScript
取消自动换行复制
classStudent : publicPerson {
public:
string studentID;
map<string, double> grades;
voiddisplayStudentInfo() {
displayInfo();
cout << "Student ID: " << studentID << endl;
cout << "Grades: ";
for (const auto& grade : grades) {
cout << grade.first << ": " << grade.second << ", ";
}
cout << endl;
}
};
在这个例子中,“Student” 类通过 “public” 关键字给与了 “Person” 类,这是一种公有给与相貌。公有给与的特色是基类的公有成员和保护成员在派生类中保执原有的拜谒权限,最新加勒比而基类的独到成员在派生类中仍然是独到的,无法径直拜谒,但照旧被给与下来。
派生类除了给与基类的成员,还不错界说我方的新成员函数和变量,以满足特定的需求。比如 “Student” 类中的 “displayStudentInfo” 函数,它不仅调用了基类的 “displayInfo” 函数来表示基本信息,还输出了学生特有的学号和得益信息 。这种在给与基础上的功能彭胀,使得代码具有更好的档次性和可看重性。
二、三种给与相貌:权限范围的艺术
C++ 提供了三种给与相貌,每种相貌齐有其零星的拜谒范围王法,就像是为基类成员在派生类中的拜谒权限建造了不同的 “密码锁”。这三种给与相貌辞别是:公有给与(public)、独到给与(private)和保护给与(protected) 。底下,咱们将深远商酌它们的奥妙。
(一)公有给与(public):最敞开的传承
公有给与是最常用的给与相貌,就像家眷中公开传承的手艺,通盘东谈主齐能看到和使用。在公有给与中,基类的公有成员和保护成员在派生类中保执原有的拜谒权限。这意味着派生类不错径直使用基类的公有成员,外部代码通过派生类对象也能拜谒这些公有成员。
咱们以之前的 “Person” 和 “Student” 类为例,“Student” 类通过公有给与 “Person” 类:
TypeScript
取消自动换行复制
classPerson {
public:
string name;
int age;
voiddisplayInfo() {
cout << "Name: " << name << ", Age: " << age << endl;
}
};
classStudent : publicPerson {
public:
string studentID;
map<string, double> grades;
voiddisplayStudentInfo() {
displayInfo();
cout << "Student ID: " << studentID << endl;
cout << "Grades: ";
for (const auto& grade : grades) {
cout << grade.first << ": " << grade.second << ", ";
}
cout << endl;
}
};
熟女乱伦网在这段代码中,“Student” 类不错径直调用 “Person” 类的 “displayInfo” 公有函数,何况外部代码也不错通过 “Student” 类的对象拜谒 “name” 和 “age” 公有成员:
TypeScript
取消自动换行复制
int main() {
Student stu;
stu.name = "Alice";
stu.age = 20;
stu.studentID = "S001";
stu.grades["Math"] = 95.0;
stu.displayInfo();
stu.displayStudentInfo();
return;
}
下一篇:没有了
- 2025/06/29仁科百华资料 C++给与与派生:代码重用的魔法 第一节
- 2025/06/29telegram 文爱 CBA惊天一战的背后:当“摔跤战术”撞碎办事体育的底线
- 2025/06/29仁科百华资料 新一代神奇作品《透视邪医混花王人》,一齐王人值得追!
- 2025/06/28爸爸的乖女儿,打飞机,口交还让禸#萝莉 CPSR详解:化妆品安全讲解的中枢内容与作用
- 2025/06/27巨臀 言情演义《穿书女配打脸平日》怎样 鹤立鸡群到如今?