Jurous 2020-04-17 10:04 采纳率: 0%
浏览 381
已采纳

c++构造函数和函数重载

定义书类Book类:
1) 每本书的信息包含有书名(C++string类型)和单价;
2) 定义两个构造函数:带一个参数的构造函数、带两个参数的构造函数
在主函数内测试,分别调用这两个构造函数,完成对象的初始化。
注意:使用string类
新手小白构造函数老师讲的太快没学懂,有大佬帮忙解析一下吗,
相关链接注释更好。

  • 写回答

1条回答 默认 最新

  • 一曲长歌仗剑天涯 2020-04-17 10:56
    关注

    构造函数是用来说明对象的。构造函数可以有任意类型的参数,但是不能有返回值。在你对一个对象进行初始化的时候要调用构造函数。并且构造函数不能定义在在私有部分。还有,构造函数的函数名为类名。就像你上面说的Book类,如下

    #include <iostream>
    
    using namespace std;
    
    class Book
    {
    public :
        string Bookname;
        int Bookprince;
        Book(string name);                      //有一个参数的构造函数
        Book(string name,int prince);           //有两个参数的构造函数
        ~Book();                                //析构函数
    };
    
    Book::Book(string name)                     //构造函数不需要返回值
    {
        Bookname = name;
        Bookprince = 100;
    }
    
    Book::Book(string name,int prince)          //构造函数不需要返回值
    {
        Bookname = name;
        Bookprince = prince;
    }
    
    Book::~Book()                               //析构函数用于在对象生命结束的时候自动调用
    {
        cout << "The Book is over" << endl;
    }
    
    int main()
    {
        Book book1("c++"),book2("c语言",50);          //用构造函数进行初始化
        cout << book1.Bookname << "  " << book1.Bookprince << endl;
        cout << book2.Bookname << "  " << book2.Bookprince << endl;
        return 0;
    }
    

    而像构造函数这种函数名称相同但是参数不同实现的代码也有区别,在调用的时候根据参数类型和数目决定调用哪个函数。这种方式称为函数重载。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作