| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1781 人关注过本帖
标题:请教两个题目
只看楼主 加入收藏
心动音符
Rank: 1
等 级:禁止访问
威 望:1
帖 子:832
专家分:0
注 册:2005-9-15
收藏
得分:0 
return num
return name
return sex
都要个函数接口不是太麻烦了吗?
吧teacher设为友员 我使了但是不行啊
他说我这有错
{num=1001;name[]="chen";sex[]="boy";CJ[0]=89.0;CJ[1]=78;CJ[2]=100;}
是不是赋值有问题啊
name[]="chen"能这样赋吗。如果不能因改如何呢,难道要一个字符一个字符的赋吗,太麻烦了吧?
有没有什么好办法啊?

2006-06-16 18:40
song4
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:38
帖 子:1533
专家分:4
注 册:2006-3-25
收藏
得分:0 
不知道别的编译器行不行
但我感觉不行
那样只能是初始化的时候
name="chen";
NAME改成指针

嵌入式 ARM 单片机 驱动 RT操作系统 J2ME LINUX  Symbian C C++ 数据结构 JAVA Oracle 设计模式 软件工程 JSP
2006-06-16 19:24
心动音符
Rank: 1
等 级:禁止访问
威 望:1
帖 子:832
专家分:0
注 册:2005-9-15
收藏
得分:0 
teacher(student &s){num=s.num;strcpy(name,s.name);sex=s.sex;}这句又出问题了 我都要被搞死了

2006-06-16 20:32
心动音符
Rank: 1
等 级:禁止访问
威 望:1
帖 子:832
专家分:0
注 册:2005-9-15
收藏
得分:0 

我又把它改成这样
#include <iostream>
using namespace std;
class student
{private:
int num;
char *name;
char *sex;
double CJ[3];
public:
friend class teacher;
student(){num=1001;name="chen";sex="boy";CJ[0]=89.0;CJ[1]=78;CJ[2]=100;}
void display();

};

class teacher
{private:
int num;
char *name;
char *sex;
public:
teacher(){num=0;name=NULL;sex=NULL;}
teacher(student &s){num=s.num;strcpy(name,s.name);strcpy(sex,s.sex);}
void display();
};

void teacher::display()
{cout<<num<<" "<<name<<" "<<sex<<endl;}

int main()
{
teacher t;
student s;
t=teacher(s);
t.display();
return 0;
}
运行是能运行了 但是...


2006-06-16 22:29
心动音符
Rank: 1
等 级:禁止访问
威 望:1
帖 子:832
专家分:0
注 册:2005-9-15
收藏
得分:0 
回复:(心动音符)我又把它改成这样#include <ios...
图片附件: 游客没有浏览图片的权限,请 登录注册

又出现这个错误,谁有空帮我写一个啊

2006-06-16 22:30
wfpb
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:2188
专家分:0
注 册:2006-4-2
收藏
得分:0 
teacher(){num=0;name=NULL;sex=NULL;}
teacher(student &s){num=s.num;strcpy(name,s.name);strcpy(sex,s.sex);}
请问如何copy?哪里有空间了?都是NULL,记得要strcpy时,要看看内存分配没~!

[glow=255,red,2]wfpb的部落格[/glow] 学习成为生活的重要组成部分!
2006-06-17 08:59
song4
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:38
帖 子:1533
专家分:4
注 册:2006-3-25
收藏
得分:0 
teacher(){num=0;name=NULL;sex=NULL;}
teacher(student &s){num=s.num;strcpy(name,s.name);strcpy(sex,s.sex);}
void display();
那里为空,你还给它拷贝??

嵌入式 ARM 单片机 驱动 RT操作系统 J2ME LINUX  Symbian C C++ 数据结构 JAVA Oracle 设计模式 软件工程 JSP
2006-06-17 18:26
song4
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:38
帖 子:1533
专家分:4
注 册:2006-3-25
收藏
得分:0 
LZ,记住这点.
类有自己的类域
跟外面一点关系也没有.
这里你char*一个指针
确实给了这个指针的地址,而这个地址也在类域里
但是它没有给这个指针所指向的地址.
也就是说,指针本身的地址分配了,4个字节.
但是它指向NULL这个任何域都公有的东西.
所以你需要显示的new给它空间
而一般的情况,数据区会做好这一切.也就是分配给它所指的空间

嵌入式 ARM 单片机 驱动 RT操作系统 J2ME LINUX  Symbian C C++ 数据结构 JAVA Oracle 设计模式 软件工程 JSP
2006-06-17 18:40
song4
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:38
帖 子:1533
专家分:4
注 册:2006-3-25
收藏
得分:0 

#include <iostream>
using namespace std;
class student
{private:
int num;
char *name;
char *sex;
double CJ[3];
public:
friend class teacher;
student(){num=1001;name="chen";sex="boy";CJ[0]=89.0;CJ[1]=78;CJ[2]=100;}
void display();

};

class teacher
{private:
int num;
char *name;
char *sex;
public:
teacher(){num=0;name=new char[20];sex=new char[20];}
void Teacher(student &s){num=s.num;strcpy(name,s.name);strcpy(sex,s.sex);}
void display();
~teacher(){delete []name;delete []sex;}
};

void teacher::display()
{cout<<num<<" "<<name<<" "<<sex<<endl;}

int main()
{
teacher t;
student s;
t.Teacher(s);
t.display();
return 0;
}

如果你非要象你那么做就这样


嵌入式 ARM 单片机 驱动 RT操作系统 J2ME LINUX  Symbian C C++ 数据结构 JAVA Oracle 设计模式 软件工程 JSP
2006-06-17 18:41
song4
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:38
帖 子:1533
专家分:4
注 册:2006-3-25
收藏
得分:0 

如果你非要象你那么做就这样
#include <iostream>
using namespace std;
class student
{private:
int num;
char *name;
char *sex;
double CJ[3];
public:
friend class teacher;
student(){num=1001;name="chen";sex="boy";CJ[0]=89.0;CJ[1]=78;CJ[2]=100;}
void display();

};

class teacher
{private:
int num;
char *name;
char *sex;
public:
teacher(student &s){name=new char[20];sex=new char[20];num=s.num;strcpy(name,s.name);strcpy(sex,s.sex);}
void display();
~teacher(){delete []name;delete []sex;}
};

void teacher::display()
{cout<<num<<" "<<name<<" "<<sex<<endl;}

int main()
{

student s;
teacher t(s);
t.display();
return 0;
}

你把teacher(student &s)做成拷贝函数一样的了,所以这个函数就在刚定义teacher时调用
并且,还需要分配空间


嵌入式 ARM 单片机 驱动 RT操作系统 J2ME LINUX  Symbian C C++ 数据结构 JAVA Oracle 设计模式 软件工程 JSP
2006-06-17 18:43
快速回复:请教两个题目
数据加载中...
 
   



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

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