• C++ 对象和类(1)


            类和结构体是比较相似,而传统的C的结构体中都是一些数据的类型,类除了有数据之外还有函数。所以可以把类想象成一个具有既有数据又有函数的复合数据类型。

            类是一种将抽象转换为用户定义类型的C++工具,它将数据表示和操纵数据的方法组合成一个整洁的包。

            以股票为例:

    股票中的数据类型有:股票的价格,股票的公司,所持股票的量等等。

    可执行的操作限制为:获得股票,增持,卖出股票,更新股票价格,显示所持股票的信息。

            存储下面的信息:

    • 公司名称;
    • 所持股票的数量;
    • 每股的价格;
    • 股票总价;

            然后定义类。一般来说,类规范由两个部分组成。

    • 类声明:以数据成员的方式描述数据部分,以成员函数(被称为方法)的方式描述公有接口。
    • 类方法定义:描述如何实现类成员函数。

            简单来说,类声明提供了类的蓝图,而方法定义则提供了细节。

    一般来说把类的定义放在.h文件中,类的成员函数的实现放入.c文件中

            凡是出现在private中出现的标识无论是函数还是数据的某个变量某个类型,都只能通过public中的方法间接地去访问它。

     GNU nano 6.2                    stock00.h

    1. #ifndef __STOCK00_H__
    2. #define __STOCK00_H__
    3. #include
    4. class Stock
    5. {
    6. private:
    7. std::string company;
    8. long shares;
    9. double share_val;
    10. double total_val;
    11. void set_totl(){total_val = shares * share_val;}
    12. public:
    13. void acquire(const std::string &co,long n,double pr);
    14. void buy(long num,double price);
    15. void sell(long num,double price);
    16. void update(double price);
    17. void show();
    18. };
    19. #endif

             关键字private和public,它们描述了对类成员的访问控制。使用类对象的程序都可以直接访问公有部分,但是只能通过公有成员函数(友元函数)来访问对象的私有成员。

            只能通过public的函数访问private。

            控制对成员的访问:公有还是私有

            无论类成员是数据成员还是成员函数,都可以在类的公有部分或私有部分声明它。但是由于隐藏数据是OOP主要的目标之一,因此数据项通常放在私有部分,组成类接口的成员函数放在公有部分:否则,就无法从程序中调用这些函数。正如Stock声明所示,可以把成员函数放在私有部分中。不能直接冲程序中调用这种函数,但是公有方法却可以使用它们。通常,程序员使用私有成员函数来处理不属于公有接口的实现细节。

            不必在类的声明中使用关键字private,因为这是类对象的默认访问控制:

    1. class World
    2. {
    3. float mass;
    4. char name[20];
    5. public
    6. void tellall(void)
    7. };

  • 相关阅读:
    神经网络和深度学习-用pytorch实现线性回归
    MES管理系统可以帮中小企业解决哪些问题
    【论文阅读】—— PointNet
    [附源码]计算机毕业设计springboot常见Web漏洞对应POC应用系统
    IDEA日常使用
    排队(单调队列+二分)
    基于Spark的智能餐饮推荐系统报告(只含部分代码)
    ES6 入门教程 29 ArrayBuffer 29.2 TypedArray 视图
    链路聚合实验(华为)
    计算机毕业设计Java校园疫情防控管理系统(源码+系统+mysql数据库+Lw文档)
  • 原文地址:https://blog.csdn.net/m0_73671341/article/details/133219368