类(Class)和对象(Object)
学习要点
C++ 在 C 语言的基础上增加了面向对象编程。类是C++的核心特性,通常被称为用户定义的类型。
类用于指定对象的形式,它包含了数据和用于处理数据的方法。
代码示例
仅使用函数的版本
#include <cmath>
#include <iostream>
using namespace std;
int area(int width, int height) { return width * height; }
int perimeter(int width, int height) { return 2 * (width + height); }
double diagonal(int width, int height) {
double sum_squares = pow(width, 2) + pow(height, 2);
return sqrt(sum_squares);
}
int main() {
int w = 4, h = 5;
cout << "面积(area): " << area(w, h) << endl;
cout << "周长(perimeter): " << perimeter(w, h) << endl;
cout << "对角线长(diagonal): " << diagonal(w, h) << endl;
w = 3;
h = 4; //修改长和宽
cout << "修改后的对角线长(diagonal): " << diagonal(w, h) << endl;
return 0;
}
使用类的版本
#include <cmath>
#include <iostream>
using namespace std;
class Rectangle { //定义名称为Rectangle的类。class类似struct,为声明类的关键字
int width, height; //属性,可以在后面的成员函数中直接使用,不用作为参数传递。
public:
Rectangle(int w, int h) { //构造函数,在初始化的时候可以指定属性值
width = w;
height = h;
}
//成员函数,可以在定义的时候就实现,也可以在类的定义后面再实现。
int area() { return width * height; } //定义时实现
int perimeter() { return 2 * (width + height); } //成员函数
//成员函数。求对角线的长度,这里仅声明,以";"结束,在后面再实现。
double diagonal();
//成员函数,可以修改属性值
void set(int w, int h) {
width = w;
height = h;
}
};
double Rectangle::diagonal() { //实现Rectangle中定义的函数
double sum_squares = pow(width, 2) + pow(height, 2);
return sqrt(sum_squares);
}
int main() {
Rectangle rect(4, 5); //rect为Rectangle类的实例(即对象)
cout << "面积(area): " << rect.area() << endl;
cout << "周长(perimeter): " << rect.perimeter() << endl;
cout << "对角线长(diagonal): " << rect.diagonal() << endl;
rect.set(3, 4); //修改长和宽
cout << "修改后的对角线长(diagonal): " << rect.diagonal() << endl;
return 0;
}