在C++中,类是非常重要的一个概念。通过类和对象,可以运用面向对象的编程思想。好比对于一个正方形,如果是用面向过程的思想就是将其运动过程分步实现,在运动过程间的时这样的使用还较为方便。但是一旦需要操纵的物体变多,过程变复杂,如果只是通过面向过程的变成思想确实也可以实现。但是这样编写程序的时候会出现很多的麻烦,而且这样的代码也不利于后期对代码的优化和修改。
依次,本次主要通过例子来引导大家将思维模式变为面向对象。
在编写例子之前,首先介绍一下C++的缺省语法。
在调用函数的时候,每次调用函数都需要对每个函数的所有参数进行传参,如果是多次对函数进行同样的操作就会显得代码过于繁杂。
因此在C++中,可以在声明或者定义函数的时候就给函数的参数赋值,若是在调用函数的时候没有给该参数赋值系统就会自动调用默认的赋值,若是已经传参使用,系统则会直接使用传入的参数。
代码如下:
#include <iostream>
using namespace std;
void show(int a = 100);
int main(){
show();
show(10);
return 0;
}
void show(int a) {
cout << a << endl;
}
如果函数的声明和定义分开写时,两者只需要其中之一做缺省即可,若是都做缺省报错。建议将缺省写在函数声明中。
在使用缺省的时候需要注意,默认的参数只能从后向前依次填入,可以不给所有的参数都做缺省,但是不能断开
如下:
void show(int a, int b = 100);//可以
void show(int a = 100, int b = 100);//可以
void show(int a = 100, int b, int c = 20);//错误,从后向前做缺省的时候在b这里断开
现在,需要实现一个对长方体进行计算的程序。我们可以首先定义一个长方体的类,然后对长方体这个类进行抽象。
首先,长方体存在长,宽,高三个属性。
其次,对长方体进行计算可以获取它的面积,体积,长,宽,高等。
具体代码如下:
#include <iostream>
using namespace std;
class Rectangle {
private:
int length;
int width;
int height;
public:
//构造函数,用于初始化类
Rectangle(int l = 10, int w = 10, int h = 10);
//析构函数
~Rectangle();
//设置长方体的长宽高
void setRect(int l, int w, int h);
//求面积
int area();
//求体积
int volume();
//展示长宽高
void show();
};
int main() {
Rectangle rect;
rect.show();
cout << "area = " << rect.area() << endl;
cout << "volume = " << rect.volume() << endl;
cout << endl;
rect.setRect(1, 1, 1);
rect.show();
cout << "area = " << rect.area() << endl;
cout << "volume = " << rect.volume() << endl;
return 0;
}
Rectangle::Rectangle(int l, int w, int h) {
length = l;
width = w;
height = h;
}
Rectangle::~Rectangle() {
length = 0;
width = 0;
height = 0;
}
void Rectangle::setRect(int l, int w, int h) {
length = l;
width = w;
height = h;
}
int Rectangle::area() {
int area;
area = length * width * 2 + length * height * 2 + width * height * 2;
return area;
}
int Rectangle::volume() {
int volume = length * width * height;
return volume;
}
void Rectangle::show() {
cout << "length: " << length << endl;
cout << "width: " << width << endl;
cout << "height: " << height << endl;
}