考研复试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++ 程序。如果有其他问题,欢迎继续提问!

考研机试常用的数据结构 文章被收录于专栏

考研机试常用的数据结构

全部评论

相关推荐

评论
点赞
3
分享

创作者周榜

更多
牛客网
牛客企业服务