学习要点

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;
}