c++没有clone方法?~~!

loswing 2007-07-24 10:45:56
以前写java,才开始写C++

java 中可以用clone这个方法实现类的拷贝,

c++实时深度拷贝是不是非得自己写才可以。


stl的map我看了下。
每次添加一个新元素的他都是保存一个副本。

class aClass{
public:
int a_id;
}

class bClass{
public:
aCass a;
int b_id;
::std::name b_name;
}

class cClass{
public:
::std::map<::std::string,bCass> mapList;
void addAUit(bClass& b){
mapList[b.b_name] = b;
}
}

//
maplist 里面保存的class 是实现深度拷贝,还是浅拷贝。
我实验的下。好b_id 和a_id都还存在,即使我把创建的对象
delete掉。
...全文
927 27 打赏 收藏 转发到动态 举报
写回复
用AI写文章
27 条回复
切换为时间正序
请发表友善的回复…
发表回复
nacarat 2007-07-26
  • 打赏
  • 举报
回复
使用c++时请忘记java
dai_weitao 2007-07-25
  • 打赏
  • 举报
回复
光学好指针是远远不够的.
Squirrel_Program 2007-07-25
  • 打赏
  • 举报
回复
复制构造函数就是了
wanglovec 2007-07-25
  • 打赏
  • 举报
回复
Java转C++, 难度还是有的.
taodm 2007-07-25
  • 打赏
  • 举报
回复
看《C++ Primer》
iambic 2007-07-24
  • 打赏
  • 举报
回复
忘了Java的前提是你的Java没学好。
dadatech 2007-07-24
  • 打赏
  • 举报
回复
提前释放?哈哈,还是同楼上几位的说法,先忘记JAVA。相反学了C++你才更加深刻理解JAVA很多别人不是很了解的内幕。。。。,比如什么引用啊,Clone啊,GC啊,那些都是需要C++的只是才能理解透彻的。
loswing 2007-07-24
  • 打赏
  • 举报
回复
下面是我要实现的东东,
我怎么怎么确认,我的m_threadList里面存的指针是不是会提前释放。
CMineRunnable的实现类的实例里面的变量是否会丢失
/**
*统一线程入口
*/
class CMineRunnable{
public:
CMineRunnable(){

};
/**
*线程实现
*/
void virtual run() = 0;
virtual ~CMineRunnable(){
};
};

/**
*线程池,稍微写了点框架
*/
class MineThreadPool
{
private:
MineThreadPool(){//私有化实现singleton

};
/**
* //FIXME 不会用同步,就直接初始化了
*/
static MineThreadPool * m_SELF;
public:
virtual ~MineThreadPool(){

};
static MineThreadPool*getInstance(){

return m_SELF;
}
/**
*启动线程,
*@param TreadOb 线程实现类
*@note 必须传递指针进来,MineThreadPool::getInstance()->start(new CMineRunnableImp());
* CMineRunnableImp t;
* start(t);//结果是不可预测的
*/
int start(CMineRunnable*TreadOb){
unsigned int back;
HANDLE trd = (HANDLE)_beginthreadex(NULL,0,threadProx,TreadOb,0,&back);
this->m_threadList[trd] = TreadOb;
return back;
}
private:
/**
*线程入口
**/
static UINT __stdcall threadProx(void *par){
CMineRunnable *pthis = reinterpret_cast<CMineRunnable*>(par);
pthis->run();
_endthread();
//DODO 清理对象。
return 0;
}
int m_pool_size;
/**
*我希望在这里保存线程的句柄,和线程的实现类的指针
*HANDLE线程句柄用来控制线程
*CMineRunnable 线程实现类指针,用来在delete对象
*/
::std::map<HANDLE,CMineRunnable*> m_threadList;
};
//TODO 这里需要修改。
MineThreadPool *MineThreadPool::m_SELF = new MineThreadPool();


//代码那里不好,不符合C++编程风格也请指出来谢谢了
scottliu 2007-07-24
  • 打赏
  • 举报
回复
copy constuctor and operator=
yingle2000 2007-07-24
  • 打赏
  • 举报
回复
c++的copy constructor就是了。
l_clove 2007-07-24
  • 打赏
  • 举报
回复
参考设计模式中的Clone.
healer_kx 2007-07-24
  • 打赏
  • 举报
回复
斑竹,你是这个意思吧?
sms88 2007-07-24
  • 打赏
  • 举报
回复
是的,当时就是这样
healer_kx 2007-07-24
  • 打赏
  • 举报
回复
你还是忘了java吧,不然学不好C++的。
taodm 2007-07-24
  • 打赏
  • 举报
回复
你还是忘了java吧,不然学了好C++的。
  • 打赏
  • 举报
回复
深拷贝,很别扭的名词啊
就是b的一个副本
WinWing 2007-07-24
  • 打赏
  • 举报
回复
感觉Java转C++,最重要的就是学好一件事:指针
wengch 2007-07-24
  • 打赏
  • 举报
回复
effective c++/more effective c++
exception c++/more exception c++/exception c++ style
c++ common knowledge
ly19820701 2007-07-24
  • 打赏
  • 举报
回复
c++ 这些特性在什么类型的书中有比较全面的介绍啊? 我有兴趣 是不是只有英文版的!!
laowang2 2007-07-24
  • 打赏
  • 举报
回复
up
加载更多回复(7)

64,439

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧