• C++ 类和对象(7) 对象数组


            和Stock一样,用户通常要创建同一个类的多个对象。可以创建独立对象变量,就像本章前面的示例所做的,但是创建对象数组将更合适。其实声明对象的方法与声明标准类型数组相同:

    Stock mysuff[4];

            当程序创建未被显式初始化的类对象时,总是调用默认构造函数。上述声明要求,这个类要么没有显式地定义如何构造函数(在此情况下,将使用不执行任何操作1的隐式默认构造函数),要么定义了一个显式默认构造函数。每个元素都是Stock对象,可以使用Stock方法:

    1. const int STKS = 4;
    2. Stock stocks[STKS]=
    3. {
    4. Stock("NanoSmart",12.5,50),
    5. Stock("Boffo Object",200,2.0),
    6. Stock("Monolithic Obelisks",130,3.25),
    7. Stock("Fleep Enterprises",60,6.5)
    8. };

          标准格式对数组进行初始化

            代码使用标准格式对数组进行初始化:用括号括起的,以逗号分隔的值列表。其中,每次构造函数调用表示一个值。如果类包含多个构造函数,则可以对不同的元素进行不同的构造函数:

    1. const int STKS = 10;
    2. Stock stock[STKS] =
    3. {
    4. Stock{"NanoSmart",12.5,20},
    5. Stock(),
    6. Stock("Monolithic Obelisks",130,3.25)
    7. };

            上述代码使用Stock(const string &co,long n,double pr)初始化stock[0]和stock[2],使用构造函数Stock()初始化stock[1]。由于该声明只初始化了数组的部分元素,因此余下的7个元素将使用默认构造函数进行初始化。

            初始化对象数组的方案是,首先使用默认构造函数创建数组元素然后花括号中的括号函数将创建临时对象然后将临时对象的内容复制到相对应的元素中因此,要创建类对象数组,则这个类必须有默认构造函数。

            知道this指针可以更加深入的了解C++的工作方式。

    例如:C++方法定义:

    1. void Stock::show() const
    2. {
    3. cout<<"Company: "<
    4. <<"Shares:"<'\n'
    5. <<"Share Price:$"<
    6. <<"Total Worth:$"<'\n';
    7. }

    C风格定义:

    1. void show(const Stock * this)
    2. {
    3. cout<<"Company: "<<this->company
    4. <<"Shares:"<<this->shares<<'\n'
    5. <<"Share Price:$"<<this->share_val
    6. <<"Total Worth:$"<<this->total_val<<'\n';
    7. }

    Stock::限定符转换成函数参数(指向Stock的指针),然后用这个指针来访问类成员。

    同样,该前段将下面的函数调用:

    top.show();

    转化为:

    show(&top);

    这样将调用对象的地址赋给了this指针。

  • 相关阅读:
    VScode报错:找不到任务“g++.exe build active file”
    Http代理与socks5代理有何区别?如何选择?(二)
    硬件测试(一):温循
    十二、消息服务(1)
    学习 OpenStack 的新指南和教程的六个建议
    你的第一个基于Vivado的FPGA开发流程实践——二选一多路器
    【JAVA】:万字长篇带你了解JAVA并发编程【一】
    高防服务器与高防IP区别
    Java 开发者必备:一文解决 AES 加密中的“非法密钥大小”异常
    【面试题】面试小技巧:如果有人问你 xxx 技术是什么?
  • 原文地址:https://blog.csdn.net/m0_73671341/article/details/133439798