| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2164 人关注过本帖
标题:C++构造函数
只看楼主 加入收藏
吕孟伟
Rank: 8Rank: 8
等 级:贵宾
威 望:27
帖 子:200
专家分:870
注 册:2018-10-4
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:6 
C++构造函数
程序代码:
#include<iostream>
using namespace std;

class Box{
     private:
         double length;
         double breadth;
         double height;
     public:
       Box(double len, double bre, double hei);//这是构造函数。
       Box(){};//请问,这是什么函数?
               //若没有这句,错误有两个,在下方已标出。
               //若没有{},也会出现错误。
       double GetVolume(void);
       Box operator+ (const Box&);
      
};
Box::Box(double len, double bre, double hei){
    length = len;
    breadth = bre;
    height = hei;
}
double Box::GetVolume(void){
    return length * breadth * height;
}
Box Box::operator+ (const Box& obj){
          Box box;//错误一:[Error] no matching function for call to 'Box::Box()'
          box.length = this->length + obj.length;
          box.breadth = this->breadth + obj.breadth;
          box.height = this->height + obj.height;
          return box;
}

int main(void)
{
        Box box1(2.0, 4.0, 6.0);
        Box box2(1.0, 2.0, 3.0);
        Box box3;//错误二:[Error] no matching function for call to 'Box::Box()'
        double Volume = 0.0;
        Volume = box1.GetVolume();
        cout << "BOX1'Volume is " << Volume << endl;
        Volume = box2.GetVolume();
        cout << "BOX2'Volume is " << Volume << endl;
        box3 = box1 + box2;
        Volume = box3.GetVolume();
        cout << "BOX3'Volume is " << Volume << endl;
    return 0;

 } 

搜索更多相关主题的帖子: length double obj 构造函数 Box 
2020-03-21 20:59
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9025
专家分:54030
注 册:2011-1-18
收藏
得分:10 
缺省构造函数
2020-03-21 21:58
倾听心跳
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:39
专家分:153
注 册:2016-6-22
收藏
得分:10 
Box(double len, double bre, double hei);//这是构造函数的重载,也是构造函数。
 Box(){};//这个是默认的构造函数
2020-03-25 09:32
d7se123
Rank: 2
等 级:论坛游民
帖 子:65
专家分:14
注 册:2020-3-13
收藏
得分:0 
如果你不写构造函数 c++编译器提供一个默认的无参构造函数
如果你写了一个带参的构造函数 默认的无参构造函数不再提供
例如 Box(double len, double bre, double hei); 所以你在调用构造有参函数的时候,需要参数匹配
Box box1(2.0, 4.0, 6.0);
因为默认无参不再提供,所以你后面 Box box;出错 ,因为没有匹配的无参构造
2020-03-31 13:47
fsqdbdx
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2020-1-2
收藏
得分:0 
学习学习
2020-03-31 15:12
生命太短暂
Rank: 2
等 级:论坛游民
帖 子:16
专家分:15
注 册:2020-4-30
收藏
得分:0 
昨天正好接触到这了
Box(){};是一个空构造,就是含空主体的默认构造函数,它和默认构造函数相同,唯一的区别是Box()=default,即使没有初始化变量也可以进行初始化
目前我知道构造函数有
1无参构造Box()
2有参构造Box(double len, double bre, double hei);
3默认构造,默认构造里面有3个知识点,前两个已经说了,还有一个是即使没有构造函数,系统也会自己创建一个公共的默认构造,不过是隐式的
2020-05-02 10:19
Thnnn
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2020-5-6
收藏
得分:0 
学习学习
2020-05-06 10:45
快速回复:C++构造函数
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017973 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved