![]() |
#2
未未来2013-10-11 19:37
|

#include<iostream>
#include"liuyu.hpp"
using namespace std;
int main(){
liuyu head;
build(head);
display(head);
return 0;
}
#include"liuyu.hpp"
using namespace std;
int main(){
liuyu head;
build(head);
display(head);
return 0;
}
当头文件是

#include<iostream>
class liuyu{
public:
char *elem;
int length;
};
void build(liuyu head){
const int L=26;
head.elem=new char[100];
for(int i=0;i!=L;++i){
head.elem[i]='a'+i;}
head.length=L;
}
void display(liuyu head){
for(int i=0;i!=head.length;++i){
std::cout<<(head.elem[i])<<" ";
}
}
class liuyu{
public:
char *elem;
int length;
};
void build(liuyu head){
const int L=26;
head.elem=new char[100];
for(int i=0;i!=L;++i){
head.elem[i]='a'+i;}
head.length=L;
}
void display(liuyu head){
for(int i=0;i!=head.length;++i){
std::cout<<(head.elem[i])<<" ";
}
}
会出现无限循环的错误,
当头文件为

#include<iostream>
class liuyu{
public:
char *elem;
int length;
};
void build(liuyu &head){
const int L=26;
head.elem=new char[100];
for(int i=0;i!=L;++i){
head.elem[i]='a'+i;}
head.length=L;
}
void display(liuyu &head){
for(int i=0;i!=head.length;++i){
std::cout<<(head.elem[i])<<" ";
}
}
class liuyu{
public:
char *elem;
int length;
};
void build(liuyu &head){
const int L=26;
head.elem=new char[100];
for(int i=0;i!=L;++i){
head.elem[i]='a'+i;}
head.length=L;
}
void display(liuyu &head){
for(int i=0;i!=head.length;++i){
std::cout<<(head.elem[i])<<" ";
}
}
函数的形参为引用时,程序运行没错,
类含有指针数据成员的时候,复制类的对象只复制地址,在这里复制地址为什么会出错,