考研复试C++的类相关知识
在 C++ 中,类是面向对象编程的核心概念之一。通过类,可以定义对象的属性和行为。C++ 还支持继承和多态(通过虚函数实现),这些特性使得代码更具扩展性和灵活性。
以下是对 C++ 类的定义、继承和虚函数的详细讲解,并附带示例代码。
1. 类的定义
类是用户定义的数据类型,包含成员变量(属性)和成员函数(方法)。
语法
class ClassName { private: // 私有成员(只能在类内部访问) int privateVar; protected: // 受保护成员(可以在派生类中访问) int protectedVar; public: // 公有成员(可以在类外部访问) int publicVar; // 构造函数 ClassName() { // 初始化代码 } // 成员函数 void display() { cout << "Value: " << privateVar << endl; } // 析构函数 ~ClassName() { // 清理代码 } };
示例
#include <iostream> using namespace std; class Person { private: string name; public: // 构造函数 Person(string n) : name(n) {} // 成员函数 void display() { cout << "Name: " << name << endl; } }; int main() { Person p("Alice"); p.display(); // 输出: Name: Alice return 0; }
2. 继承
继承是面向对象编程的重要特性,允许一个类(派生类)从另一个类(基类)继承属性和方法。
语法
class BaseClass { // 基类成员 }; class DerivedClass : access-specifier BaseClass { // 派生类成员 };
- 访问修饰符: public:基类的公有成员在派生类中仍然是公有的。protected:基类的公有成员在派生类中变为受保护的。private:基类的公有成员在派生类中变为私有的。
示例
#include <iostream> using namespace std; // 基类 class Animal { protected: string name; public: Animal(string n) : name(n) {} void speak() { cout << name << " makes a sound." << endl; } }; // 派生类 class Dog : public Animal { public: Dog(string n) : Animal(n) {} void speak() { cout << name << " barks." << endl; } }; int main() { Dog dog("Buddy"); dog.speak(); // 输出: Buddy barks. return 0; }
3. 虚函数与多态
虚函数允许在派生类中重写基类的函数,并通过基类指针或引用调用派生类的函数,实现运行时多态。
语法
class BaseClass { public: virtual void function() { // 基类实现 } }; class DerivedClass : public BaseClass { public: void function() override { // 派生类实现 } };
virtual
:声明虚函数。override
:显式标记派生类中重写的函数(C++11 引入)。
示例
#include <iostream> using namespace std; // 基类 class Animal { public: virtual void speak() { cout << "Animal makes a sound." << endl; } }; // 派生类 class Dog : public Animal { public: void speak() override { cout << "Dog barks." << endl; } }; // 派生类 class Cat : public Animal { public: void speak() override { cout << "Cat meows." << endl; } }; int main() { Animal* animal1 = new Dog(); Animal* animal2 = new Cat(); animal1->speak(); // 输出: Dog barks. animal2->speak(); // 输出: Cat meows. delete animal1; delete animal2; return 0; }
4. 纯虚函数与抽象类
纯虚函数是没有实现的虚函数,包含纯虚函数的类称为抽象类,不能实例化。
语法
class AbstractClass { public: virtual void function() = 0; // 纯虚函数 };
示例
#include <iostream> using namespace std; // 抽象类 class Shape { public: virtual void draw() = 0; // 纯虚函数 }; // 派生类 class Circle : public Shape { public: void draw() override { cout << "Drawing a circle." << endl; } }; // 派生类 class Square : public Shape { public: void draw() override { cout << "Drawing a square." << endl; } }; int main() { Shape* shape1 = new Circle(); Shape* shape2 = new Square(); shape1->draw(); // 输出: Drawing a circle. shape2->draw(); // 输出: Drawing a square. delete shape1; delete shape2; return 0; }
总结
- 类的定义:封装属性和方法。
- 继承:实现代码复用和层次化设计。
- 虚函数:支持运行时多态。
- 纯虚函数与抽象类:定义接口,强制派生类实现。
通过合理使用这些特性,可以编写出高效、可扩展的 C++ 程序。如果有其他问题,欢迎继续提问!
考研机试常用的数据结构 文章被收录于专栏
考研机试常用的数据结构