C++ 知识量:19 - 82 - 316
C++中的基类是定义一个类的基础,它包含了一组方法和属性,这些方法和属性可以被派生类继承和重写。以下是一个简单的C++基类的示例:
class BaseClass { public: // 公共成员函数 void publicFunction() { // 实现公共函数 } protected: // 保护成员函数和变量 int protectedVariable; private: // 私有成员函数和变量 int privateVariable; };
在这个示例中,BaseClass是一个基类,它包含了三个成员函数和两个成员变量。其中,publicFunction()是一个公共成员函数,可以被派生类继承和重写;protectedVariable和privateVariable分别是保护成员变量和私有成员变量,它们的访问权限分别受到保护和限制。
除了成员函数和成员变量之外,基类还可以定义构造函数、析构函数、虚函数等。其中,构造函数用于初始化对象的状态,析构函数用于释放对象占用的资源,虚函数用于实现多态性。
C++中的派生类(Derived class)是从基类(Base class)派生出来的类。派生类继承了基类的所有成员变量和成员函数,并且可以在派生类中添加新的成员变量和成员函数,或者覆盖基类中的成员函数。
以下是创建一个派生类的基本语法:
class Base { // 基类的成员变量和成员函数 }; class Derived : public Base { // 派生类的成员变量和成员函数 };
在这个例子中,Derived 是从 Base 类派生出来的。关键字 public 指定了派生方式为公有继承,这意味着基类的公有成员在派生类中也是公有的。如果没有指定派生方式,则默认为私有继承。
派生类可以使用基类的成员函数,也可以重写基类的成员函数。如果派生类想要使用基类的成员函数,可以使用 base 关键字来引用基类的成员函数,例如:
class Base { public: void foo() { // do something } }; class Derived : public Base { public: void foo() override { // do something else Base::foo(); // 调用基类的 foo() 函数 } };
在这个例子中,Derived 类重写了 Base 类的 foo() 函数,并且在派生类的 foo() 函数中调用了基类的 foo() 函数。关键字 override 表示这个函数是覆盖基类的成员函数。
C++中的继承是一种面向对象编程中的基本概念,它允许在一个类中定义新的类,并且新类可以继承原有类的属性和方法。通过继承,可以创建更加复杂和可重用的对象模型。
在C++中,继承可以使用关键字extends或者 :来声明。例如,可以定义一个基类Person和一个派生类Student,其中Student继承了Person的所有成员变量和成员函数:
class Person { protected: string name; int age; public: void setName(string n) { name = n; } void setAge(int a) { age = a; } string getName() { return name; } int getAge() { return age; } }; class Student : public Person { private: string school; public: void setSchool(string s) { school = s; } string getSchool() { return school; } };
在这个例子中,Student继承了Person的所有公有成员变量和成员函数,并且添加了一个新的私有成员变量school。可以使用extends关键字来声明继承关系:
class Student extends Person { // ... };
除此之外,还可以使用组合来实现继承。组合是指将一个类的对象作为新类的成员变量。例如,可以定义一个Person类和一个Student类,其中Student对象包含一个Person对象:
class Person { protected: string name; int age; public: void setName(string n) { name = n; } void setAge(int a) { age = a; } string getName() { return name; } int getAge() { return age; } }; class Student { private: Person person; // Person对象作为Student类的成员变量 string school; public: void setPerson(Person p) { person = p; } void setSchool(string s) { school = s; } Person getPerson() { return person; } string getSchool() { return school; } };
在这个例子中,Student对象包含一个Person对象,并且添加了一个新的私有成员变量school。
Copyright © 2017-Now pnotes.cn. All Rights Reserved.
编程学习笔记 保留所有权利
MARK:3.0.0.20240214.P35
From 2017.2.6