C++面向对象编程
C++是一种支持面向对象编程(OOP)的语言。面向对象编程的核心概念包括类(Class)、对象(Object)、继承(Inheritance)、多态(Polymorphism)和封装(Encapsulation)。
类(Class)
类是创建对象的模板。它定义了一组属性(称为成员变量)和方法(称为成员函数)。
cpp
复制
class Animal { public: void speak() { std::cout << "Some animal sound" << std::endl; } };
对象(Object)
对象是类的实例。通过使用类定义的模板,可以创建具有特定属性(成员变量)和方法(成员函数)的对象。
cpp
复制
Animal myAnimal; myAnimal.speak(); // 输出: Some animal sound
构造函数和析构函数
构造函数是在对象创建时自动调用的特殊成员函数,用于初始化对象的成员变量。析构函数是在对象销毁时自动调用的特殊成员函数,用于执行任何必要的清理工作。
cpp
复制
class Animal { public: Animal() { std::cout << "Animal created" << std::endl; } ~Animal() { std::cout << "Animal destroyed" << std::endl; } void speak() { std::cout << "Some animal sound" << std::endl; } };
继承(Inheritance)
继承允许一个类(子类)继承另一个类(父类)的属性和方法。子类可以添加新的属性和方法,或者覆盖父类的方法。
cpp
复制
class Dog : public Animal { public: void bark() { std::cout << "Woof!" << std::endl; } };
多态(Polymorphism)
多态允许以统一的接口处理不同的数据类型。这通常通过虚函数(virtual function)实现,允许子类重写父类的方法。
cpp
复制
class Dog : public Animal { public: void speak() override { std::cout << "Woof!" << std::endl; } }; Animal* animal = new Dog(); animal->speak(); // 输出: Woof! 而不是 "Some animal sound"
封装(Encapsulation)
封装是将数据(成员变量)和与数据操作有关的方法捆绑在一起的过程。这有助于隐藏内部细节,只暴露必要的接口。
cpp
复制
class Animal { private: std::string name; public: void setName(const std::string& newName) { name = newName; } std::string getName() const { return name; } };
模板类
模板类是使用模板创建的类,它可以处理任何数据类型。
cpp
复制
template <typename T> class Stack { private: T* data; int size; int top; public: Stack(int capacity) { data = new T[capacity]; size = capacity; top = -1; } void push(const T& value) { if (top < size - 1) { data[++top] = value; } } T pop() { if (top >= 0) { return data[top--]; } throw std::out_of_range("Stack<>::pop(): empty stack"); } };
掌握面向对象编程的概念是学习C++的关键部分,它允许你创建更灵活、可重用和易于管理的代码。