第十章 对象和类

    xiaoxiao2021-08-22  100

    C++跟C相比最重要的改进就是提供了类,这本书到了第十章终于讲这个了。。。而且还是最基础的基础,可见C++博大精深啊,路漫漫其修远兮,吾只能慢慢一点一点求索啊 

    1. 过程性编程和面向对象编程

    学习类肯定得知道为什么有类,类是为了面向对象的编程,区别于老一代面向过程的编程。过程性编程就是首先考虑要遵循的步骤,然后考虑如果一步一步表示这些数据。但是实际情况往往不是一步一步来的,一会跳到这一会跳到那,所以就需要更智能的编程思路,这就是基于对象的编程:首先建立描述要操作的对象,然后定义对象之间的操作,这些构成了程序的各种接口,之后用户根据各自接口来完成最后的程序。

    这两者之间的区别看起来很容易,但实质上是两种编程思想的区别,所以要在之后的学习中不断体会。

    2. 抽象和类

    前面说了面向对象编程首先是要建立描述要操作的对象,这一步叫做抽象。抽象是可以描述一个具体的对象,也可以是描述一个操作,也可以说是描述一个问题。C++把各种实际的东西抽象成类,也叫用户定义类型(于内置类型相对应)。

    书中举了一个把某人持有的某种股票抽象成类的例子。首先我们得必须记录“某人”,可能是他的全名,ID,地址等,同时也得记录“某种股票”, 包括它的当前价格,某人持有的股票数量等。之后我们得定义一系列操作,包括获得股票,增持,卖出股票,显示股票等等。这样的一个类必须有两个部分组成:

    类声明,以数据成员的方式描述数据部分(某人,某种股票),以成员函数(被称为方法)的方式描述共有接口 (接口就是用户或者程序访问或者使用这个类的连接口)

    类方法:描述如何实验类成员函数

    类用关键字class声明,如上面的股票类可以这样

    class Stock {

    private:

    string someone;

    double shares;

    ...

    public:

    void acquire(someone, someshares, share_price);

    void sale(..)

    void show(...)

    ...

    };

    一般这样的类声明可以放在一个头文件中,成员函数可以直接写在下面,也可以另开一个cpp文件写。

    类声明很像struct,但多了private,public 关键字,也可以包含函数。

    声明了一个类,就可以声明一个类的对象,比如男人是一个类,这个类被声明之后,就可以用它来声明一个男人的对象Tom

    上述stock类可以这样声明它的对象:

    Stock sally;

    这样sally.someone就可以是名字,sally.sale(...) 就描述sally.someone卖了股票,以多少钱

    private和public关键字描述对类成员的房屋控制。如果是private,表示这是对象的私有成员,外部不能调用修改,而只能通过public下的共有成员来访问或者修改。访问控制还有一个关键字叫protected,十三章会讲

    这里涉及到另外一个概念,叫封装,就是将实现细节放在一起并将它们与抽象分开。封装可以是多种方式,比如把数据设为private,比如将方法的实现细节设为private,也可以是把public的方法放在不同的文件中

    我们现在在类里面声明了方法,那怎么在类外面或者另外一个文件中描述这个类方法呢,比如上例

    void Stock:: sale(...)

    { ...}

    注意这里要用::来表示sale方法是Stock类的一个成员。 方法则可以任意类的成员,比如Stock的sale()就可以调用Stock的任何成员变量,不论private与否

    转载请注明原文地址: https://ju.6miu.com/read-676899.html

    最新回复(0)