下面的例子,是拷贝函数的问题,在上面的基础上,我改动了一下程序的结构,
定义了一个名空间。
具体的问题分析我留给下次,您就有机会细细的看了。您是否一切都清楚了?
您可以解决这个问题吗?
//human.h class Name char *getName(){ return name;} }; //拷贝赋值操作 //名空间里的函数 } //测试文件 if(IsSameMan(lucy,lily))
#pragma once
#using
namespace Humanbeing
{
#define NULL 0
{
char *name;
public:
Name(char *_name=NULL):name(_name) {}
~Name() { }
class Human
{
Name *name; //
int ID; //唯一的标志
public:
Human(int id=0,char *_name=NULL):ID(id)
{
name=new Name(_name);//申请资源
}
~Human(void)
{
delete name;//释放资源
}
Human &operator=(Human &human){
if(this!=&human){
ID=human.getID();
name=new Name(human.getName()->getName());
return *this;
}
}
int getID()const { return ID;}
Name *getName() { return name;}
};
bool IsSameMan(Human one,Human another)
{
if(one.getID()==another.getID())
return true;
else return false;
}
#include
#include "human.h"
void main()
{
using namespace Humanbeing;
try{
Human lily(11100120,"lily");
Human lucy=lily;
{
std::cout<<" They are the same one. ";
}else
std::cout<<" No,they're not the same one. ";
|
您将承担一切因您的行为、言论而直接或间接导致的民事或刑事法律责任
留言板管理人员有权保留或删除其管辖留言中的任意内容 本站提醒:不要进行人身攻击。谢谢配合。 |