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

是不是带参数的构造函数的声明只能在.h中啊,比如
class jose
{ public:
jose(int i=1,int n=3)
...............
protected:
int interval;
int number;
}

jose::jose(int i=1int n=3)
{
interval=i;
number=n;
}


这可以么,谢谢回答:)不对的话,怎么改进呢:)

搜索更多相关主题的帖子: 构造函数 参数 jose int number 
2006-02-06 16:58
柳儿
Rank: 6Rank: 6
等 级:贵宾
威 望:25
帖 子:1830
专家分:30
注 册:2004-9-23
收藏
得分:0 
楼主的意思是,不带参数的构造函数的声明可以在.cpp中?

我想楼主先分清楚一下,.h 和.cpp 两个文件里都放些什么吧。

.h 文件放类的声明
.pp文件放类的成员函数的实现。
这样要在其他文件中使用这个类,只需引用它的.h文件就可以了。就是一个良好的编程习惯。

成功会使人骄傲。如果你骄傲自大,你就会停止学习。不学习,人就停止了进步
2006-02-06 17:13
woodhead
Rank: 3Rank: 3
等 级:新手上路
威 望:9
帖 子:1124
专家分:0
注 册:2005-7-18
收藏
得分:0 

class jose
{ public:
jose(int i=1,int n=3)
...............
protected:
int interval;
int number;
}

jose::jose(int i,int n)
{
interval=i;
number=n;
}

应该是这样吧


2006-02-06 17:17
woodhead
Rank: 3Rank: 3
等 级:新手上路
威 望:9
帖 子:1124
专家分:0
注 册:2005-7-18
收藏
得分:0 
以下是引用柳儿在2006-2-6 17:13:00的发言:
楼主的意思是,不带参数的构造函数的声明可以在.cpp中?

我想楼主先分清楚一下,.h 和.cpp 两个文件里都放些什么吧。

.h 文件放类的声明
.pp文件放类的成员函数的实现。
这样要在其他文件中使用这个类,只需引用它的.h文件就可以了。就是一个良好的编程习惯。

说的没错

我估计楼主的意思,是想问在定义时还要不要写默认


2006-02-06 17:21
柳儿
Rank: 6Rank: 6
等 级:贵宾
威 望:25
帖 子:1830
专家分:30
注 册:2004-9-23
收藏
得分:0 
噢~~,这样啊。

成功会使人骄傲。如果你骄傲自大,你就会停止学习。不学习,人就停止了进步
2006-02-06 17:23
DarkHero
Rank: 1
等 级:新手上路
威 望:2
帖 子:191
专家分:0
注 册:2006-1-14
收藏
得分:0 

是他问错了罢~


for( ; me.alive() ; ) { 淡泊名利,志存高远 } //Forever
2006-02-07 00:11
karlzhouzhi
Rank: 1
等 级:新手上路
帖 子:70
专家分:0
注 册:2005-12-25
收藏
得分:0 
问题 没解决
还是不行:)
2006-02-07 15:46
柳儿
Rank: 6Rank: 6
等 级:贵宾
威 望:25
帖 子:1830
专家分:30
注 册:2004-9-23
收藏
得分:0 
你的类声明完了,要打;号

class joke
{
……
}; <- 分号

成功会使人骄傲。如果你骄傲自大,你就会停止学习。不学习,人就停止了进步
2006-02-07 16:00
karlzhouzhi
Rank: 1
等 级:新手上路
帖 子:70
专家分:0
注 册:2005-12-25
收藏
得分:0 

好像带参数的构造函数定义都在*.h中定义,而不能在*.cpp中定义。(*.h代表类定义,*.cpp代表定义类中成员函数的C++ source file)。比如:
#include <iostream.h>
#include<string.h>

class student
{
public:
student(char *pName="no name",int ssid=0) //书上好像都没有把这种带参数的构造函数在另外的文件(以*.h表示)中定义,都是在类(以*.cpp表示)中定义的。
{
id=ssid;
strcpy(name,pName);
cout<<"constructing new student "<<pName<<endl;
}

student(student &s)
{
cout<<"constructing copy of "<<s.name<<endl;
strcpy(name,"copy of ");
strcat(name,s.name);
id=s.id;
}
~student()
{
cout<<"destructing "<<name<<endl;
}
protected:
char name[40];
int id;
};

void fn(student s)
{
cout<<"In function fn()"<<endl;
}
void main()
{
student randy("randy",1234);
cout<<"calling fn()"<<endl;
fn(randy);
cout<<"returned from fn()"<<endl;
}

2006-02-07 21:32
柳儿
Rank: 6Rank: 6
等 级:贵宾
威 望:25
帖 子:1830
专家分:30
注 册:2004-9-23
收藏
得分:0 
以下是引用karlzhouzhi在2006-2-7 21:32:00的发言:

好像带参数的构造函数定义都在*.h中定义,而不能在*.cpp中定义。(*.h代表类定义,*.cpp代表定义类中成员函数的C++ source file)。比如:
#include <iostream.h>
#include<string.h>

class student
{
public:
student(char *pName="no name",int ssid=0) //书上好像都没有把这种带参数的构造函数在另外的文件(以*.h表示)中定义,都是在类(以*.cpp表示)中定义的
{
id=ssid;
strcpy(name,pName);
cout<<"constructing new student "<<pName<<endl;
}



楼主是想说哪个意思?我都给弄糊涂了。带参数的构造函数和带参数的普通成员函数,楼主认为不一样么?尽信书不如无书。试一下,楼主就知道了吧?

成功会使人骄傲。如果你骄傲自大,你就会停止学习。不学习,人就停止了进步
2006-02-08 09:12
快速回复:关于带参数的构造函数
数据加载中...
 
   



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

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