📄 subject_53119.htm
字号:
<p>
序号:53119 发表者:困惑的人 发表日期:2003-09-17 14:25:39
<br>主题:请教各位同志,这句是什么意思?
<br>内容:#include<string.h><BR>#include<iostream.h><BR>class Student<BR>{<BR>public:<BR> Student(char *pName="no name";int ssld=0)<BR> {<BR> //id=ssld;<BR> strcpy(name,pName);<BR> name[sizeof(name)-1]='\0';<BR> cout<<"Constructing new student"<<pName<<endl;<BR> }<BR><BR> Student(Student&s)<BR> {<BR> cout<<"Constructing copy of"<<s.name<<endl;<BR> strcpy(name,"copy of");<BR> strcat(name,s.name);////将“copy of”拼接在name之前。<BR> //id=s.id;<BR> }<BR> ~Student()<BR> {<BR> cout<<"Destructing"<<name<<endl;<BR> }<BR>protected:<BR> char name[40];<BR> //int id;<BR>};<BR><BR>class Tutor<BR>{<BR>public:<BR> Tutor(Student&s):student(s) 这句是什么意思?<BR>~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~<BR> {<BR> cout<<"Constructing tutor\n";<BR> }<BR>protected:<BR> Student student;<BR>};<BR>void fn(Tutor tutor)<BR>{<BR> cout<<"ln function fn()\n";<BR>}<BR>void main()<BR>{<BR> Student randy("Randy");<BR> Tutor tutor("rdndy");<BR> cout<<"Calling fn()\n";<BR> fn(tutor);<BR> cout<<"Returned from fn()\n";<BR>}<BR>不懂这句话是什么意思?所以不能理解。Tutor(Student&s):student(s) 在主程序里 当我这样定义时Tutor tutor("rdndy");出错<BR>F:\sr\拷贝构造函数\hanshu\instructing'.cpp(47) : error C2664: '__thiscall Tutor::Tutor(class Student &)' : cannot convert parameter 1 from 'char [6]' to 'class Student &'<BR>怎么改? <BR><BR><BR><BR>
<br><a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p>
<hr size=1>
<blockquote><p>
<font color=red>答案被接受</font><br>回复者:a dog 回复日期:2003-09-17 15:06:12
<br>内容:Tutor(Student&s):student(s)<BR>这是用成员初始化列表来初始化成员变量。<BR>是另一种初始化方式。
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:困惑的人 回复日期:2003-09-17 15:16:25
<br>内容:你是说把类Tutor的对象是Student类来初始化吗?那Student&s应该是什么呢?<BR>我认为Tutor的对象是Student&s类来初始化。可是我定义Tutor对象Tutor tutor("rdndy");<BR>出错了,我怎么改呢?<BR>真烦死了,初学c++。买了本钱能的,里面的程序错误好多,也不知道怎么弄的。<BR>帮帮忙,把该程序改为正确的。
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:a dog 回复日期:2003-09-17 15:27:20
<br>内容:#include<string.h><BR>#include<iostream.h><BR>class Student<BR>{<BR>public:<BR> Student(char *pName="no name",int ssld=0)//这儿有个错,中间是分号<BR> {<BR> //id=ssld;<BR> strcpy(name,pName);<BR> name[sizeof(name)-1]='\0';<BR> cout<<"Constructing new student"<<pName<<endl;<BR> }<BR><BR> Student(Student&s)<BR> {<BR> cout<<"Constructing copy of"<<s.name<<endl;<BR> strcpy(name,"copy of");<BR> strcat(name,s.name);////将“copy of”拼接在name之前。<BR> //id=s.id;<BR> }<BR> ~Student()<BR> {<BR> cout<<"Destructing"<<name<<endl;<BR> }<BR>protected:<BR> char name[40];<BR> //int id;<BR>};<BR><BR>class Tutor<BR>{<BR>public:<BR> Tutor(Student&s):student(s) // 这句是什么意思?<BR>//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~<BR> {<BR> cout<<"Constructing tutor\n";<BR> }<BR>protected:<BR> Student student;<BR>};<BR>void fn(Tutor tutor)<BR>{<BR> cout<<"ln function fn()\n";<BR>}<BR>void main()<BR>{<BR> Student randy("Randy");<BR> Tutor tutor(randy);//这儿有个错,把引号去掉,名字也没写对<BR> cout<<"Calling fn()\n";<BR> fn(tutor);<BR> cout<<"Returned from fn()\n";<BR>}<BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:困惑的人 回复日期:2003-09-17 15:41:45
<br>内容:去掉了就不知道randy是个什么东西了,还是会出错,请问什么名字写错了?不知道。<BR>希望...有个美好的。。。回答。
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:a dog 回复日期:2003-09-17 15:47:34
<br>内容:randy被你写成了rdndy
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:水番 回复日期:2003-09-17 15:51:24
<br>内容:a dog 基本已经回答了你所想要的,但是你这个程序有很大的问题,就是拷贝构造函数,拷贝构造函数的参数类型要加上const。由于绑定一个非const引用到一个临时的对象是非法的,使用Student(Student&s)不会允许复制任何特殊表达式的结果。
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:困惑的人 回复日期:2003-09-17 16:14:25
<br>内容:谢谢两位的回答,“randy被你写成了rdndy ”完全正确。改了就没什么事情了<BR>我想问一下:为什么randy不能加引号。<BR>是水番兄的理由吗?谢谢。
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:水番 回复日期:2003-09-17 16:23:35
<br>内容:加引号的话那是字符串。和我说的无关,但是你那个拷贝构造函数的参数要加上const。
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:困惑的人 回复日期:2003-09-17 16:36:29
<br>内容:要写成Tutor(const Student&s):student(s) 这个形式么?<BR>水番兄,看的出你对c有很深的见解。问一下你说的struct是指c++中的类吗? <BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:水番 回复日期:2003-09-17 16:53:05
<br>内容:是要写成那样的形式,<BR>你所说的,是指我什么时候说的struct。
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:困惑的人 回复日期:2003-09-17 17:07:22
<br>内容:我经常看到你对别人的作答。建议别人把一些别的结构写成struct 想必就是我想的类吧<BR>你申请了MSN Messenger了吗?欢迎加我。我的帐号是sunny03cn@hotmail.com.cn<BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:水番 回复日期:2003-09-17 17:11:27
<br>内容:我的是MSN: Panjianfeng2002@tom.com<BR>不过我暂时搞我的硬盘,这个硬盘有坏区,烦!
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:困惑的人 回复日期:2003-09-18 10:26:09
<br>内容:<BR> Tutor(Student&s):student(s) 这是用成员初始化列表来初始化成员变量。<BR>请教各位能不能说清楚些,是用类Student的成员来初始化Tutor的成员吗?<BR>中间的(Student&s)是不是就是把类Student的成员来初始化Tutor的成员使用的方法???<BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:水番 回复日期:2003-09-18 10:34:19
<br>内容:student是Tutor的一个成员,<BR>是用s来初始化student。<BR><BR>给你的一个建议就是看书!<BR>找本外国佬写的吧。
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:困惑的人 回复日期:2003-09-18 10:42:38
<br>内容:你推荐一本吧。我实在找不到好书,在书店里大都是教人怎么做什么实例的。人家说钱能的好,我买了一本也不觉得怎么样,The c++ program 只能买到中文的。现在正在看,我和你一样在公司实习阶段,以前只会画程序,做了个什么的感觉了不起了,哎,现在看来真的不行,还是要练内功
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:水番 回复日期:2003-09-18 10:49:25
<br>内容:《C++ Primer Plus》(看清楚,不是《C++ Primer》<BR>如果你已经有些基础,建议看《C++编程思想》<BR>以后的以后再说 :-)
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:Bardo 回复日期:2003-09-19 21:08:17
<br>内容:我看你们大家最好看书吧:<BR>关于这个问题的下确答案:<BR>钱能《C++程序设计》:“派生类的构造函数与析构函数”<BR><BR>那才是你们真正要弄懂的!!!!!!!!
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:水番 回复日期:2003-09-19 21:56:09
<br>内容::-)<BR>这里可没有用到派生,只不过把一个用户类型的对象做为成员而已,<BR>给你一个建议,以后还是看仔细点。
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:Bardo 回复日期:2003-09-19 23:06:03
<br>内容:我确实没有看仔细,谢谢。但是,你并没有讲清,为什么要用const呀!<BR><BR>我这有个拙作:<BR><BR>http://www.easthot.net/article_read.asp?id=126
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:水番 回复日期:2003-09-19 23:11:05
<br>内容:呵呵,难得。<BR>我把它收藏起来了,过两天慢慢看(明天去让老总炒鱿鱼)。不过正如我在另一个帖子也说了,我不想把所有的东西都写出来,给大家一个讨论和思考的余地。
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:困惑的人 回复日期:2003-09-23 10:59:46
<br>内容:钱的书说的太少了,也不太清楚。我也一直不清楚为什么要家const?
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -