C++类和对象基础详解
什么是类和对象
C++中类指的是一种自定义的数据类型,可以包含数据(成员变量)以及方法(成员函数)。对象则是根据类定义的实例。类和对象是面向对象编程的核心概念。
如何定义类
定义类的基本语法如下:
class 类名 {
public: //访问限定符
成员变量(属性)
成员函数(方法)
};
其中,访问限定符有三种:public、protected、private,代表成员变量和成员函数的访问权限。
示例代码如下:
class Person {
public:
string name; //此处使用了C++的string类
int age;
void sayHello() {
cout << "Hello, my name is " << name << ". I'm " << age << " years old." << endl;
}
}; //注意要以分号结尾
上述代码定义了一个名为Person的类,包含了name和age两个成员变量,以及一个成员函数sayHello。
如何创建对象
创建对象的语法为:
类名 对象名;
示例代码如下:
Person person1; //创建了一个Person类的对象,名为person1
对象创建后,可以通过“.”访问其中的成员变量和成员函数。示例代码如下:
person1.name = "Tom";
person1.age = 22;
person1.sayHello(); //输出 "Hello, my name is Tom. I'm 22 years old."
类的构造函数和析构函数
类中还可以定义构造函数和析构函数,用于初始化和销毁对象时执行相应的操作。构造函数和析构函数分别以类名开头、以~符号和类名开头命名。
示例代码如下:
class Person {
public:
string name;
int age;
Person() { //构造函数
cout << "A new person is created." << endl;
}
~Person() { //析构函数
cout << "A person is destroyed." << endl;
}
void sayHello() {
cout << "Hello, my name is " << name << ". I'm " << age << " years old." << endl;
}
};
示例说明
示例1:
#include <iostream>
using namespace std;
class Rectangle {
public:
int width;
int height;
Rectangle(int w, int h) { //构造函数
width = w;
height = h;
cout << "A rectangle is created." << endl;
}
~Rectangle() { //析构函数
cout << "A rectangle is destroyed." << endl;
}
int getArea() {
return width * height;
}
};
int main() {
Rectangle rect1(4, 5);
cout << "The area of rect1 is: " << rect1.getArea() << endl;
Rectangle rect2(3, 6);
cout << "The area of rect2 is: " << rect2.getArea() << endl;
return 0;
}
上述代码定义了一个Rectangle类,包含width、height两个成员变量以及getArea方法。在main函数中创建了两个Rectangle对象,分别计算了其面积并输出。注意,每次创建和销毁对象时会分别调用构造函数和析构函数。
示例2:
#include <iostream>
using namespace std;
class Date {
public:
int year;
int month;
int day;
Date(int y, int m, int d) { //构造函数
year = y;
month = m;
day = d;
}
bool isEqual(Date date) {
if (year == date.year && month == date.month && day == date.day) {
return true;
}
else {
return false;
}
}
};
int main() {
Date date1(2022, 8, 5);
Date date2(2022, 8, 5);
if (date1.isEqual(date2)) {
cout << "date1 and date2 are equal." << endl;
}
else {
cout << "date1 and date2 are not equal." << endl;
}
Date date3(2021, 8, 5);
if (date1.isEqual(date3)) {
cout << "date1 and date3 are equal." << endl;
}
else {
cout << "date1 and date3 are not equal." << endl;
}
return 0;
}
上述代码定义了一个Date类,包含year、month、day三个成员变量,以及isEqual方法。在main函数中创建了三个Date对象,分别比较它们是否相等。注意,isEqual方法的参数是一个Date对象,即通过对象进行传递。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C++类和对象基础详解 - Python技术站