首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

帮帮小弟我1

2012-02-16 
帮帮我1#include iostreamusingnamespacestdclassbox{private:intheight,width,lengthpublic:box(inth

帮帮我1
#include <iostream>
using   namespace   std;
class   box
{private:
int   height,width,length;
public:
box(int   h=10,int   w=10,int   l=10):height(h),width(w),length(l){}
      void   dispaly(){cout < <height < < "     " < <width < < "     " < <length < <endl;}


};
int   main()
{
box   box1;
box1.dispaly();
box   box2(12,13);
box2.dispaly();
box   box3(16);
box3.dispaly();


box   box4(   ,15,36);     //这是错误的,应该用什么样的格式才正确

return   0;

}


构造函数BOX,我现在想height为默认的值10,我想width,length为我所设置的值
我用这样去构造函数,是错误的

box   box4(   ,15,36);
  问下哪位高手,应该用什么样的格式才能完成这样的功能呢?

[解决办法]
没有格式,这是不允许的。
[解决办法]
C++里的默认值只能从后往前设置,
像楼主要求的这种只第一个有默认值,
而后面没有,
那是不可能的.

想要第一个参数有默认值,就要保证它后面的都有默认值
[解决办法]
象他们那样说的,可以这样设置达到你的要求

box(int h=10,int w=10,int l=10):height(h),width(w),length(l){}
变成box(int w=10,int l=10,int h=10):width(w),length(l),height(h){}
然后你这样用就可以了
box box4(15,36);
[解决办法]
因为C++对参数的读取是从左往右的,所以一旦读到数就先放到第一个参数上,再依次读取,故而不能将前面的省去,而不省后面的。而楼主的做法则通不过编译器的编译,因为不存在这样的语法!
[解决办法]
你把构造函数3个参数中的int h=10 放到第3个位置就可以的
然后调用 box box4(15,36);

热点排行
Bad Request.