| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 664 人关注过本帖
标题:构造函数问题
只看楼主 加入收藏
vic_space
Rank: 1
等 级:新手上路
帖 子:38
专家分:0
注 册:2006-5-24
收藏
 问题点数:0 回复次数:8 
构造函数问题

请看下面程序2种写法,一个是构造函数在类里面,一个在外面~!怎么只能在类里面的才通过编译~!
class Desk

{
private:
int weight;
int height;
int width;
int length;
public:
Desk(int,int,int,int);

};

Desk::Desk(int we=3,int h=4,int wi=5,int l=6)
{
weight=we;
height=h;
width=wi;
length=l;
cout<<weight<<height<<width<<length<<endl;
}


void main()
{
Desk dk1;
Desk dk2(6,5);
Desk dk3(6,5,5,5);
cout<<"Back in main"<<endl;
}

======================================================================
class Desk

{
private:
int weight;
int height;
int width;
int length;
public:
Desk(int we=3,int h=4,int wi=5,int l=6)
{
weight=we;
height=h;
width=wi;
length=l;
cout<<weight<<height<<width<<length<<endl;
}

};

void main()
{
Desk dk1;
Desk dk2(6,5);
Desk dk3(6,5,5,5);
cout<<"Back in main"<<endl;
}
===================================================================
问题是在Desk dk1;这个对象定义不能读取默认值~!

搜索更多相关主题的帖子: 函数 构造 
2006-09-18 22:00
虫虫飞ya飞
Rank: 1
等 级:新手上路
帖 子:122
专家分:0
注 册:2005-11-28
收藏
得分:0 

如果在类中你已经有了构造函数,c++就不在为你提供默认的构造函数,你必须自己再定义一个默认的构造函数。

上面两个定义加上默认的构造函数都可以运行,区别就在第一个在类外定义,第二个是内联只是在desk前面省略了inline.

[此贴子已经被作者于2006-9-19 8:52:15编辑过]


2006-09-19 08:47
woodhead
Rank: 3Rank: 3
等 级:新手上路
威 望:9
帖 子:1124
专家分:0
注 册:2005-7-18
收藏
得分:0 
参数默认值的写法不对

[CODE]class Desk
{
private:
int weight;
int height;
int width;
int length;
public:
Desk(int we=3,int h=4,int wi=5,int l=6);

};

Desk::Desk(int we,int h,int wi,int l)
{
weight=we;
height=h;
width=wi;
length=l;
cout<<weight<<height<<width<<length<<endl;
}[/CODE]



2006-09-19 09:30
nsd
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2006-9-19
收藏
得分:0 

和上面的兄弟一个想法...

2006-09-19 12:16
大尾巴狼
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2006-9-4
收藏
得分:0 

对,上面的两位说的对,应该在定义构造函数时给出参数的初始值。缺省参数就可以得到值了。

2006-09-19 12:59
song4
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:38
帖 子:1533
专家分:4
注 册:2006-3-25
收藏
得分:0 
以下是引用woodhead在2006-9-19 9:30:50的发言:
参数默认值的写法不对

[CODE]class Desk
{
private:
int weight;
int height;
int width;
int length;
public:
Desk(int we=3,int h=4,int wi=5,int l=6);

};

Desk::Desk(int we,int h,int wi,int l)
{
weight=we;
height=h;
width=wi;
length=l;
cout<<weight<<height<<width<<length<<endl;
}[/CODE]


我没这么写过.........
都回了,下拉


嵌入式 ARM 单片机 驱动 RT操作系统 J2ME LINUX  Symbian C C++ 数据结构 JAVA Oracle 设计模式 软件工程 JSP
2006-09-19 14:20
帅加加
Rank: 1
等 级:新手上路
帖 子:21
专家分:0
注 册:2006-9-19
收藏
得分:0 
[求助]
你那段代码我用vs2005.Net能过,没错误啊
只是下面加了:
int main()
{
Desk sDesk;
return 0;
}

只要你打不死劳资,劳资就要站起来
2006-09-19 22:02
帅加加
Rank: 1
等 级:新手上路
帖 子:21
专家分:0
注 册:2006-9-19
收藏
得分:0 
不好意思,刚才我把你的main函数改了
你创建的第一个对象dk1应该写成dk1()
这样能过

只要你打不死劳资,劳资就要站起来
2006-09-19 22:08
woodhead
Rank: 3Rank: 3
等 级:新手上路
威 望:9
帖 子:1124
专家分:0
注 册:2005-7-18
收藏
得分:0 

我试了下,两种都可以,不好意思了。

2006-09-19 23:41
快速回复:构造函数问题
数据加载中...
 
   



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

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