社区
C++ 语言
帖子详情
问一个关于clone函数的问题
zzunicholas
2006-08-24 03:25:13
基类A有个clone函数A* clone()
派生类也应该有个clone函数B* clone()
我是想基类A的clone函数是做成虚函数呢,还是就是这个样子,然后派生类隐藏基类同名函数?
...全文
202
12
打赏
收藏
问一个关于clone函数的问题
基类A有个clone函数A* clone() 派生类也应该有个clone函数B* clone() 我是想基类A的clone函数是做成虚函数呢,还是就是这个样子,然后派生类隐藏基类同名函数?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
12 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
QQ_370566617
2006-08-29
打赏
举报
回复
如果是虚函数
class B : public A
{
public:
virtual A* clone();//krh2001(边城浪子)所说的返回基类
但是我要是这样用会出问题
B b;
B* pB = b.clone(); //会报错的啊?B* pB = (B*)b.clone();也不行
怎么办???
jerry
2006-08-28
打赏
举报
回复
楼上的,也不用返回void* 返回最深的那个基类就可以了
jerry
2006-08-28
打赏
举报
回复
VC6 肯定不支持协变返回, 但不知道VC7以后有是否支持. GCC是支持的
QQ_370566617
2006-08-28
打赏
举报
回复
如果你用VC6 好像不支持协变返回
不过你可以返回void *
这样返回就相同了
使用的时候用强制转化加上类型识别就行了
sankt
2006-08-24
打赏
举报
回复
#include<iostream>
using namespace std;
class A
{
public:
virtual A* clone();
virtual ~A()
{
//
cout<<"A destructor."<<endl;
}
};
A* A::clone()
{
cout<<"In class A."<<endl;
return new A();
}
class B : public A
{
public:
virtual B* clone();
virtual ~B()
{
//
cout<<"B destructor."<<endl;
}
};
B* B::clone()
{
cout<<"In class B."<<endl;
return new B();
}
int main()
{
B b;
A & ref = b;
A* pa = ref.clone();
delete pa;
system("pause");
return 0;
}
cunsh
2006-08-24
打赏
举报
回复
参考<<c++必知必会>>的条款31 协变返回类型
cunsh
2006-08-24
打赏
举报
回复
书上说这种情况是协变返回类型.
漂流的代码
2006-08-24
打赏
举报
回复
应该做成虚函数。 而且返回之的类型也必须是一致的
cunsh
2006-08-24
打赏
举报
回复
这种情况可以是虚函数的.
zzunicholas
2006-08-24
打赏
举报
回复
如果做成所虚函数,但是他们的返回都不同啊
在我印象当中,派生类的虚函数不是要和基类返回和参数要一样吗?
如果不一样不就不是虚函数了?
sankt
2006-08-24
打赏
举报
回复
虚函数
jerry
2006-08-24
打赏
举报
回复
这个肯定应该是此虚函数 .
Linux下
clone
函数
这一篇探究
clone
函数
clone
参数: int
clone
(int (*fn)(void *fnarg), void *child_stack, int flags, void *arg, ... /* pid_t *pid, struct user_desc *tls, pid_t *ctid */ ); fn是指向子
Clone
函数
在C++中,要拷贝
一个
对象,除了自定义
一个
拷贝构造
函数
来实现对象复制外,还可以实现
一个
clone
函数
。这需要借助编译器实现的
一个
隐藏拷贝构造
函数
,这样的做法,更省心。背后的原理是C++的原型(Prototype)模式:用...
C++ primer 15章句柄类的
clone
函数
(转)
clone
函数
很重要,要使用句柄类该是不可避免的需要定义
clone
函数
回想为什么要使用句柄类,一开始,想用multiset来存储某个类的一些对象,这些对象可能存在父子关系,所以不能直接存放对象(子对象转化为父对象...
C++
clone
()
函数
的用法
原型模式在C++中,要拷贝
一个
对象,除了自定义
一个
拷贝构造
函数
来实现对象复制外,还可以实现
一个
clone
函数
。这需要借助编译器实现的
一个
隐藏拷贝构造
函数
,这样的做法,更省心。背后的原理是C++的原型(Prototype)...
实现
一个
clone
函数
实现
一个
函数
clone
,可以对JavaScript中的5种主要的数据类型(包括Number、String、Object、Array、Boolean)进行值复制。 /** * 对象克隆 * 支持基本数据类型及对象 * 递归方法 */ function
clone
(obj) { ...
C++ 语言
64,642
社区成员
250,580
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章