C++面向对象
C++是一种支持面向对象编程(OOP)的编程语言。面向对象编程是一种编程范式,它使用“对象”来设计软件。在C++中,面向对象的概念主要涉及以下几个核心概念:
1. 类(Class)
类是创建对象的模板或蓝图。它定义了对象的数据和行为。类中的数据成员称为属性,行为成员称为方法。
class Car {
public:
string brand; // 属性
void honk() { // 方法
cout << "Beep beep!\n";
}
};
2. 对象(Object)
对象是类的实例。每个对象都拥有类中定义的属性和方法。
Car myCar; // 创建Car对象
myCar.brand = "Toyota"; // 访问属性
myCar.honk(); // 调用方法
3. 封装(Encapsulation)
封装是面向对象编程的一个基本原则,它将对象的数据和方法结合在一起,并对外隐藏内部实现的细节。在C++中,使用访问修饰符如private, protected, 和 public来实现封装。
class Car {
private:
string brand;
public:
void setBrand(string b) {
brand = b;
}
string getBrand() {
return brand;
}
};
4. 继承(Inheritance)
继承允许我们定义一个基于另一个类的类,从而继承基类的属性和方法。这有助于代码复用。
class Vehicle { // 基类(父类)
public:
string brand = "Ford";
void honk() {
cout << "Tuut, tuut!\n";
}
};
class Car: public Vehicle { // 派生类(子类)
public:
string model = "Mustang";
};
Car myCar;
myCar.honk(); // Car继承了Vehicle的方法
cout << myCar.brand + " " + myCar.model; // Car继承了Vehicle的属性
5. 多态(Polymorphism)
多态允许我们使用统一的接口来访问多个不同的基本形态(类型)。在C++中,多态通常通过使用指针或引用以及虚函数来实现。
class Animal {
public:
virtual void speak() {
cout << "Some sound\n";
}
};
class Cat : public Animal {
public:
void speak() override {
cout << "Meow meow\n";
}
};
class Dog : public Animal {
public:
void speak() override {
cout << "Woof woof\n";
}
};
void makeAnimalSpeak(Animal &animal) {
animal.speak(); // 多态性使得我们可以在这里调用任何Animal子类的speak()方法
}
Cat myCat;
Dog myDog;
makeAnimalSpeak(myCat); // 输出:Meow meow
makeAnimalSpeak(myDog); // 输出:Woof woof
6. 抽象(Abstraction)
抽象是一种只显示有用信息的概念,它隐藏了背后的复杂细节。在C++中,可以使用抽象类和纯虚函数来实现。
class AbstractEmployee {
virtual void AskForPromotion() = 0; // 纯虚函数
};
class Employee: AbstractEmployee {
private:
string Name;
string Company;
int Age;
public:
void AskForPromotion() {
if (Age > 30)
cout << Name << " got promoted!" << endl;
else
cout << Name << ", sorry no promotion for you!" << endl;
}
};
这些是C++中面向对象编程的基本概念。通过以上概念,C++提供了一种强大的方式来模拟真实世界的问题和创建可复用的代码。