@Author:Runsen
面向对象编程旨在:在编程中实现继承、隐藏、多态等现实世界的实体。OOP 的主要目的是将数据和对它们进行操作的函数绑定在一起。
我们可以说C++中的类,代表一组共享一些共同属性和行为的对象。
class person{char name[20];int id;public:void getdetails(){}};int main(){person p1; // p1 is a object }
构造函数
构造函数是特殊的类成员,每次实例化该类的对象时,编译器都会调用它们。构造函数与类同名,可以定义在类定义的内部或外部。
构造函数在以下方面与普通函数不同:
构造函数与类本身同名构造函数没有返回类型创建对象时会自动调用构造函数。它必须放在class的公共部分。如果我们不指定构造函数,C++ 编译器会为对象生成一个默认构造函数(期望没有参数并且有一个空体)。
有3种类型的构造函数:
默认构造函数参数化构造函数复制构造函数(这种比较少见)
#include <iostream>using namespace std;class Geeks{public:int id;//默认构造Geeks(){cout << "Default Constructor called" << endl;id = -1;}//参数化构造函数Geeks(int x){cout << "Parameterized Constructor called" << endl;id = x;}};int main(){// 默认构造Geeks obj1;cout << "Geek id is: " << obj1.id << endl;// 参数化构造函数Geeks obj2(21);cout << "Geek id is: " << obj2.id << endl;return 0;}Default Constructor calledGeek id is: -1Parameterized Constructor calledGeek id is: 21
复制构造函数是一个成员函数,它使用同一类的另一个对象来初始化一个对象。复制构造函数具有以下通用函数原型:
ClassName (const ClassName &old_obj);
以下是复制构造函数的简单示例。
#include <iostream>using namespace std;class Point{private:int x, y;public:// 参数化构造函数Point(int x1, int y1){x = x1;y = y1;}// 复制构造函数Point(const Point &p1){x = p1.x;y = p1.y;}int getX() { return x; }int getY() { return y; }};int main(){Point p1(10, 15); // 参数化构造函数Point p2 = p1; // 复制构造函数cout << "p1.x = " << p1.getX() << ", p1.y = " << p1.getY();cout << "\np2.x = " << p2.getX() << ", p2.y = " << p2.getY();return 0;}p1.x = 10, p1.y = 15p2.x = 10, p2.y = 15
析构函数
析构函数是另一个特殊的成员函数,当对象的作用域结束时由编译器调用。
#include <iostream>using namespace std;class Geeks{public:int id;//析构函数~Geeks(){cout << "Destructor called for id: " << id <<endl;}};int main(){Geeks obj1;obj1.id=7;int i = 0;while ( i < 5 ){Geeks obj2;obj2.id=i;i++; } // obj2的范围到此结束return 0;} // obj1的范围到此结束Destructor called for id: 0Destructor called for id: 1Destructor called for id: 2Destructor called for id: 3Destructor called for id: 4Destructor called for id: 7
面向对象编程中的三大封装、继承和多态
继承
继承:一个类从另一个类派生属性和特征的能力称为继承。继承是面向对象编程最重要的特性之一。
子类:从另一个类继承属性的类称为子类或派生类。超类:其属性由子类继承的类称为基类或超类。可重用性:继承支持“可重用性”的概念,即当我们想要创建一个新类并且已经有一个包含我们想要的一些代码的类时,我们可以从现有类中派生出我们的新类。通过这样做,我们正在重用现有类的字段和方法。
封装
数据封装是一种把数据和操作数据的函数捆绑在一起的机制,数据抽象是一种仅向用户暴露接口而把具体的实现细节隐藏起来的机制。
C++ 通过创建类来支持封装和数据隐藏(public、protected、private)。我们已经知道,类包含私有成员(private)、保护成员(protected)和公有成员(public)成员。默认情况下,在类中定义的所有项目都是私有的。例如:
多态
多态:多态这个词意味着有多种形式。简单来说,我们可以将多态性定义为消息以多种形式显示的能力。
一个人同时可以有不同的特点。就像男人同时是父亲、丈夫、雇员。所以同一个人在不同的情况下会有不同的行为。这称为多态性。