• 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版 [(美)梁勇著][机械工业出版社]

  • 相关阅读:
    JS中的“&&”与“&”和“||”“|”有什么区别?
    深入理解CSS过度动画transition
    使用navigator.userAgent查看浏览器当前模式和版本
    node.js面试题
    Javascript 中的 ...(展开运算符)
    JavaScript立即执行函数
    JavaScript实现继承的6种方式
    JavaScript的排序算法--冒泡、选择、直接插入
    JavaScript RegExp 对象
    (CVPR 2020 Oral)最新Scene Graph Generation开源框架
  • 原文地址:https://www.cnblogs.com/bwjblogs/p/12675183.html
Copyright © 2020-2023  润新知