📅  最后修改于: 2023-12-03 14:59:52.448000             🧑  作者: Mango
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;
}
在这个例子中,Dog
和Cat
类都继承了Animal
类,并实现了自己的MakeSound
方法。在main
方法中,创建了Dog
和Cat
的实例,并使用指针pDog
和pCat
调用MakeSound
方法。由于MakeSound
方法是虚函数,编译器会在程序运行时动态绑定到正确的方法上。