社区
C++ 语言
帖子详情
问一个关于clone函数的问题
zzunicholas
2006-08-24 03:25:13
基类A有个clone函数A* clone()
派生类也应该有个clone函数B* clone()
我是想基类A的clone函数是做成虚函数呢,还是就是这个样子,然后派生类隐藏基类同名函数?
...全文
234
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
函数
本文通过多个实验深入探讨了Linux下
clone
函数
的工作原理及其参数的影响,特别是不同标志位设置下的进程行为变化。
Linux
Clone
函数
本文围绕Linux
Clone
函数
展开,介绍其用于创建进程和线程的方法。详细解析了
clone
()和
clone
3()的原型、描述、参数差异,还阐述了子进程结束信号、set_tid数组、flags掩码等内容,说明了该
函数
在实现线程等方面的用途及相关注意事项。
Linux的
Clone
函数
本文详细解析了Linux系统调用
clone
的工作原理及其参数意义,特别是
clone
_flags标志的作用,并通过
一个
具体的C语言示例展示了如何使用
clone
来创建线程。
库
函数
clone
的用法
本文详细介绍了Linux系统中库
函数
clone
的作用及其使用方法。
clone
是对底层系统调用fork的扩展,能够创建共享资源的进程或线程。文章涵盖了
函数
原型、参数说明、工作原理及示例代码,并对比了与其他进程创建方式的区别。重点讲解了标志位的含义和常见应用场景。
Clone
函数
本文介绍了C++中的
Clone
函数
,作为一种对象复制方法,它利用隐藏拷贝构造
函数
实现,以及原型模式的原理和应用。讨论了浅复制和深复制的区别,以及与拷贝构造
函数
和new操作的对比,适用于资源优化、性能安全和多修改者场景,同时指出其局限性如类功能考虑和派生类实现
Clone
接口的要求。
C++ 语言
65,210
社区成员
250,514
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章