社区
C++ 语言
帖子详情
虚函数&构造函数
pan2008
2003-08-22 02:54:39
虚函数可以是PROTECT或PRIVATE吗
构造函数可以是PROTECT或PRIVATE吗
...全文
138
20
打赏
收藏
虚函数&构造函数
虚函数可以是PROTECT或PRIVATE吗 构造函数可以是PROTECT或PRIVATE吗
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
20 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
mechgoukiteng
2003-08-23
打赏
举报
回复
关于虚函数可以为PROTECT或PRIVATE,建议大家看看以前myan翻译的一篇文章,jjhou网站上有
叫“与大虾对话,领悟设计模式”。这2者都可以,而且应该经常考虑!,注意,我们写程序一定要考虑语义!另。java中private函数不可以动态绑定,这也是我认为最不爽的地方
至于构造函数为PROTECT或PRIVATE,。还是推荐大家看看单件了
xghost
2003-08-23
打赏
举报
回复
up
snipersu
2003-08-23
打赏
举报
回复
至少要有一个是public的,除非你不想构造这样类型的对象.
kweio
2003-08-23
打赏
举报
回复
贵在坚持!贵在坚持!贵在坚持!贵在坚持!
sevecol
2003-08-23
打赏
举报
回复
看看设计模式里面的单件
不是不让别人实例化,是控制别人实例化
pan2008
2003-08-23
打赏
举报
回复
定义的类我不让别人实例化
在什么时候会用到?
把构造函数protected
那该构造函数何时会被调用?
yellowwolf
2003-08-23
打赏
举报
回复
纯虚函数可以为私有吧?
如:
class A{
public:
A() { }
virtual void display()=0;
};
class B : public A
{
public:
B() { }
};
纯虚函数要在子类中定义,都没有被继乘下来啊。
真相重于对错
2003-08-23
打赏
举报
回复
wxq109应该看一看“设计模式”
构造函数是private,如sevcel所说,在“单件”下,
如果一个系统中对于某个类,只允许生成一个对象,可以使用如下代码
class si{
si();
public:
static si& init();
}
static si& si::init()
{
//判断对象是否生成
return new si();
}
minghui000
2003-08-23
打赏
举报
回复
构造函数不可以是PROTECT或PRIVATE,否则不能初始化对象
ljfwarrior
2003-08-22
打赏
举报
回复
wxq109(wxq109)说得确是精彩.
wxq109
2003-08-22
打赏
举报
回复
虚函数可以是PROTECT或PRIVATE吗
构造函数可以是PROTECT或PRIVATE吗
?????????//
什么都可以,除构造函数不行,
请问,你设成PROTECT或PRIVATE,有什么意义?
还不是要用一个public函数来调用。
那不就像是脱裤子打屁,多次一举?
再说,可读性也不高。就像脱裤子打屁那样不雅观。
chxinheifeng
2003-08-22
打赏
举报
回复
两个概念没有关联,至于你要实现什么目的,才采用什么样的方法,就象定义的类我不让别人实例化
就可以把构造函数protected
lzy125vc
2003-08-22
打赏
举报
回复
构造函数不行
yellowdawnhlm
2003-08-22
打赏
举报
回复
纯虚函数也可以
yellowwolf
2003-08-22
打赏
举报
回复
虚函数可以是PRIVATE 还有什么意义呢
纯虚函数应不能为私有吧。
qhgary
2003-08-22
打赏
举报
回复
都是可以的
jyfcsdn
2003-08-22
打赏
举报
回复
虚函数可以是PROTECT或PRIVATE吗
构造函数可以是PROTECT或PRIVATE吗
完全可以
sevecol
2003-08-22
打赏
举报
回复
都可以,单件模式就要求构造函数不是public
存取限制符和函数类型没有什么直接关系。
akun
2003-08-22
打赏
举报
回复
private 函数 子类 是不能访问的....一般需要访问限制的虚函数用protected.
meimj
2003-08-22
打赏
举报
回复
构造函数不可以是PROTECT或PRIVATE,否则不能初始化对象
构造函数
不能为
虚函数
之前一直关注着析构函数为什么要设置为
虚函数
,倒是没有想着
构造函数
可否为
虚函数
的问题,对此,进行一下总结:
构造函数
不能是
虚函数
,原因如下:
虚函数
对应一个虚指针,虚指针其实是存储在对象的内存空间的。如果
构造函数
是虚的,就需要通过 虚指针执行那个
虚函数
表(编译期间生成属于类)来调用,可是对象还没有实例化,也就是内存空间还没有,就没有虚指针,所以
构造函数
不能是
虚函数
。
虚函数
的作用在于通过父类的指针或者引用来调用它的时候能够变成调用子类的那个成员函数。而
构造函数
是在创建对象时自动调用的,不可能通过父类的指针或
为什么
构造函数
不能是
虚函数
?析构函数可以是
虚函数
吗?
构造函数
不能声明为
虚函数
,析构函数可以声明为
虚函数
,而且有时是必须声明为
虚函数
。 抽象类中构造和析构均不能使用纯
虚函数
。 为什么
构造函数
不能声明为
虚函数
呢? 1、构造一个对象的时候,必须知道对象的实际类型,而
虚函数
是在运行期间确定实际类型的。如果
构造函数
为
虚函数
,则在构造一个对象时,由于对象还未构造成功,编译器还无法知道对象的实际类型,是该类本身还是派生类。无法确定。 2、
虚函数
的执行依赖于
虚函数
表,而
虚函数
表是在
构造函数
中初始化的,即初始化vptr,让它指向
虚函数
表。如果
构造函数
为
虚函数
,则在构造
构造函数
为什么一般不定义为
虚函数
?而析构函数一般写成
虚函数
的原因 ?
1、
构造函数
不能声明为
虚函数
1)因为创建一个对象时需要确定对象的类型,而
虚函数
是在运行时确定其类型的。而在构造一个对象时,由于对象还未创建成功,编译器无法知道对象的实际类型,是类本身还是类的派生类等等 2)
虚函数
的调用需要
虚函数
表指针,而该指针存放在对象的内存空间中;若
构造函数
声明为
虚函数
,那么由于对象还未创建,还没有内存空间,更没有
虚函数
表地址用来调用
虚函数
即
构造函数
了 2、析构函...
为什么析构函数可以为
虚函数
但是
构造函数
不能为
虚函数
构造函数
不能声明为
虚函数
,析构函数可以声明为
虚函数
,而且有时是必须声明为
虚函数
。 不建议在
构造函数
和析构函数里面调用
虚函数
。
构造函数
不能声明为
虚函数
的原因是: 1 构造一个对象的时候,必须知道对象的实际类型,而
虚函数
行为是在运行期间确定实际类型的。而在构造一个对象时,由于对象还未构造成功。编译器无法知道对象 的实际类型,是该类本身,还是该类的一个派生类,或是更深层次的派生类。无法确定。。。 2
虚函数
的执行依赖于
虚函数
表。而
虚函数
表在
构造函数
中进行初始化工作,即初始化vptr,让他指向正确的
虚函数
表。而在
构造函数
为什么不能为
虚函数
?
构造函数
为什么不能调用
虚函数
?
构造函数
与
虚函数
C++ 语言
64,281
社区成员
250,470
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章