C++类和对象之类基础

先回忆一下对象(object)。对象表示现实世界一个独一无二的实体,一个对象具有唯一的身份,状态,行为。

  • 一个对象的状态(state,也称为属性)用数据域及他们当前的值表示。例如一个对象“圆”,有数据域“半径”,它是刻画圆的属性。
  • 一个对象的行为(behavior,也称为动作)由一组函数定义。对一个对象调用一个函数就是请求对象执行一个操作。例如可以为“圆”对象定义一个函数getArea(),一个“圆”对象可以通过调用getArea()得到它的面积。

相同类型的对象可以用一个通用的类来定义。类(class)就是一个模板或者说约定,定义了这些相同类型的对象具有怎样的数据域和函数。一个对象就是一个类的实例,我们可以创建一个类的多个实例。

实例化是指创建一个实例的过程。通常情况下,术语“对象”和“实例”是等价的。

在一个类里,用变量定义数据域,用函数定义行为。

类里面还有一种特殊的函数,叫做构造函数。它没有返回类型,只是执行一系列操作(操作可以没有),它的函数名一定与类名一样。构造函数可以有多个,但是参数不同。

构造函数的主要目的是为了初始化对象。

可以把类看成是一种数据类型,构造函数就是在初始化这个类型的数据。

下面定义一个圆的类:

class Circle {
//public是一个关键字,类似的关键字还有private等,用来说明数据域和函数的访问权限
public:
    //数据域,圆的半径
    double radius;
    //定义常量PI
    const double PI = 3.14159;

    //无参构造函数,即没有参数的构造函数
    Circle() {
        //若调用无参构造函数,则圆的半径为1
        radius = 1;
    }

    //有参构造函数,即带有参数的构造函数
    Circle(double newRadius) {
        //若调用有参构造函数,则圆的半径为newRadius
        radius = newRadius;
    }

    //行为,获取圆的面积
    double getArea () {
        return radius*radius*PI;
    }

};

对象

创建对象:

#include <iostream>

using namespace std;

class Circle {
//public是一个关键字,类似的关键字还有private等,用来说明数据域和函数的访问权限
public:
    //数据域,圆的半径
    double radius;
    //定义常量PI
    const double PI = 3.14159;

    //无参构造函数,即没有参数的构造函数
    Circle() {
        //若调用无参构造函数,则圆的半径为1
        radius = 1;
    }

    //有参构造函数,即带有参数的构造函数
    Circle(double newRadius) {
        //若调用有参构造函数,则圆的半径为newRadius
        radius = newRadius;
    }

    //行为,获取圆的面积
    double getArea () {
        return radius*radius*PI;
    }

};

int main()
{
    //调用无参构造函数
    Circle c1;

    //调用有参构造函数,参数为1
    Circle c2(1);

    //调用有参构造函数,参数为3
    Circle c3(3);

    cout << "c1的半径是" << c1.radius << ",面积是" << c1.getArea() << endl;
    cout << "c2的半径是" << c2.radius << ",面积是" << c2.getArea() << endl;
    cout << "c3的半径是" << c3.radius << ",面积是" << c3.getArea() << endl;

    return 0;
}

运行结果:

参考资料

[1] C++程序设计  原书第3版 [(美)梁勇著][机械工业出版社]

posted @ 2020-04-11 11:38  川尘  阅读(242)  评论(0编辑  收藏  举报
`