📜  C++类和对象(1)

📅  最后修改于: 2023-12-03 14:59:52.448000             🧑  作者: Mango

C++类和对象

C++类和对象是对象导向编程中的基本概念。类定义了一个对象的属性和行为,而对象是类的一个实例。

基本语法

一个C++类的基本语法如下:

class ClassName {
private: 
    //属性
public: 
    //方法
};

其中,private关键字定义了类的私有成员,只能在类内部使用。public关键字定义了类的公有成员,可以在类内部和外部使用。

类的构造函数和析构函数

当一个类实例化的时候,会自动调用构造函数。构造函数是类的一个特殊的成员函数,用于初始化对象属性。

class ClassName {
public: 
    //构造函数
    ClassName(int a, int b) {
        x = a;
        y = b;
    }
private:
    int x;
    int y;
};

int main() {
    //创建实例
    ClassName obj(1,2);
    return 0;
}

析构函数在对象被删除时自动调用,用于释放对象占用的资源。

class ClassName {
public: 
    //构造函数
    ClassName() {
        //分配内存
        data = new int[100];
    }

    //析构函数
    ~ClassName() {
        //释放内存
        delete[] data;
    }

private:
    int* data;
};
类的继承

类的继承是面向对象编程中的一个重要特性。可以通过继承基类,来扩展已有的类。

class Shape {
public:
    //计算面积
    virtual int GetArea() = 0;
};

class Rectangle : public Shape {
public:
    //计算面积
    int GetArea() {
        return width * height;
    }

private:
    int width;
    int height;
};

在这个例子中,Shape是一个抽象类,没有具体的实现。Rectangle类继承了Shape类,并实现了自己的GetArea方法。

类的多态

C++支持编程语言的多态性,即同一个方法在不同的情况下表现出不同的行为。

class Animal {
public:
    //发出声音
    virtual void MakeSound() = 0;
};

class Dog : public Animal {
public:
    //发出声音
    void MakeSound() {
        cout << "汪汪汪" << endl;
    }
};

class Cat : public Animal {
public:
    //发出声音
    void MakeSound() {
        cout << "喵喵喵" << endl;
    }
};

int main() {
    //创建实例
    Animal* pDog = new Dog();
    Animal* pCat = new Cat();
    
    //动态绑定
    pDog->MakeSound();
    pCat->MakeSound();
    
    delete pDog;
    delete pCat;
    
    return 0;
}

在这个例子中,DogCat类都继承了Animal类,并实现了自己的MakeSound方法。在main方法中,创建了DogCat的实例,并使用指针pDogpCat调用MakeSound方法。由于MakeSound方法是虚函数,编译器会在程序运行时动态绑定到正确的方法上。