社区
C++ 语言
帖子详情
虚函数&构造函数
pan2008
2003-08-22 02:54:39
虚函数可以是PROTECT或PRIVATE吗
构造函数可以是PROTECT或PRIVATE吗
...全文
141
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,否则不能初始化对象
FFmpeg音视频基础之C++系列第1:C++入门经典第10版
学习计划:1、每天学习1个小时,大概1个月完成。 2、认真听讲,要自己揣摩,明白原理。 3、动手实践、必须要多做课后练习题,遇到不会的,及时提问。课程目标:从一个纯小白,到真正理解变量的实质,指针的实质,学会C++类及面向对象编程课程简介:敬告:该系列的课程在抓紧录制更新中,敬请大家关注。该系列的课程涉及:FFmpeg,WebRTC,SRS,Nginx,Darwin,Live555,等。包括:音视频、流媒体、直播、Android、视频监控28181、等。--------------------------------------------------- ---------------------------------------------------给学员(从小白到大牛)的3年学习路径及计划技术方面分三块:1.纯开发技术方向2.音视频流媒体专业方向3.项目实战---------------------------------------------------1.纯开发技术方向(1) C++必须要过硬(至少学会10本经典好书)(2) 系统级编程(Windows、Linux),必须特别熟练系统API,灵活运用(3) 框架与工具(Qt、MFC):必须精通其中一种。(4) 架构与设计模式:需要提升一个高度,不再是简单的编码,而是思维模式。(5) 驱动级别(如果有兴趣,可以深入到驱动级:包括Windows、Linux)(6) 最好学习点Java+Html+javascript等WEB技术。2.音视频流媒体专业方向(1) 音视频流媒体基础理论: 必须认真学会,否则看代码就是看天书(2) 编解码方向:精通h.264,h.265(hevc), 包括理论和各个开源库(ffmpeg,libx264,libx265,...)。(3) 直播方向: 精通各种直播协议(rtsp,rtmp,hls,http-flv,...), 钻研各个开源库(live555,darwin,srs,zlmediakit,crtmpserver,...)(4) 视频监控: 理论+开源库(onvif+281818)(EasyMonitor、iSpy、ZoneMinder(web)、...) 3.项目实战(1) Qt项目: 至少要亲手练习10个实战项目(网络服务器、多线程、数据库、图像处理、多人聊天、等等)(2)音视频项目:包括编解码、视频监控、直播等各个方向,都需要亲手实战项目,包括视频服务器、后台管理系统、前端播放器(多端)--------------------------------------------------- 具体的内容包括: n 1.全书概览与分析 51.1 初步认识:做到心中有数 51.2 图解:章节关系 61.3 探讨:教学方法论 71.4 探讨:学习方法论 71.5 C++的1.0与2.0 81.6 开发工具Qt5.9和VS2015/7/9 8控制台: 8UI界面: 81.7 安装并搭建Qt5.9.8开发环境 91.下载软件Qt Creator 5.9.8 92.双击开始安装 93.注册Qt账号 114.激活Qt账号 125.选择安装路径 176.选择“安装组件” 197.同意“许可协议” 218.点击“安装”后,请喝杯茶 241.8 捋起袖子开干:几个小案例 35第一:写代码打印“CS”图形 36第二:写代码打印各种图形(作业) 361.9 原书第一章剖析 371.计算机是什么? 372.程序是什么? 383.程序设计 384.C++入门程序示例 40n 第2章 C++基础知识 412.1 变量和赋值 412.2 输入和输出 422.3 数据类型和表达式 432.4 简单控制流程 442.5 程序风格 452.6 x=x-3到底是个什么鬼? 46第3章 更多的控制流程 473.1 使用布尔表达式 473.2 多路分支 483.3 C++循环语句详解 483.4 设计循环 513.5 课堂练习 51第4章 过程抽象和返回值的函数 524.1 自顶向下设计 524.2 预定义函数 534.3 程序员自定义函数 534.4 过程抽象 544.5 作用域和局部变量 554.6 重载函数名称 55第5章 用函数完成所有子任务 565.1 void函数 575.2 传引用参数 575.3 使用过程抽象 595.4 测试和调试函数 595.5 常规调试技术 59第6章 I/O流——对象和类入门 606.1 流和基本文件I/O 606.2 流I/O工具 616.3 字符I/O 62第7章 数组 637.1 数组入门 637.2 函数中的数组 657.3 数组编程 667.4 多维数组 67第8章 字符串和向量 688.1 字符串的数组类型 688.2 标准string类 698.3 向量 71第9章 指针和动态数组 719.1 指针 719.2 手工动态数组 74第10章 定义类 7610.1 结构体 7710.2 类 7810.3 抽象数据类型 8110.4 继承 8210.5 拷贝
构造函数
8310.6 析构函数 8410.7 重载赋值(=)操作符 84第11章 友元函数、重载操作符和数组 8611.1 友元函数 8711.2 重载操作符 8811.3 数组和类 9111.4 类和动态数组 91第12章 独立编译和命名空间 9212.1 独立编译 9212.2 命名空间 93第13章 指针和链表 94第14章 递归 95第15章 继承 9615.1 继承基础 9615.2 继承细节 9715.3 多态性(
虚函数
) 98第16章 异常处理 10016.1 异常处理基础 10016.2 用于异常处理的编程技术 101第17章 模板 10217.1 用于算法抽象的模板 10217.2 用于数据抽象的模板 103第18章 标准模板库(STL) 10418.1 迭代器 10418.2 容器 10518.3 泛型算法 10618.4 不断进化的C++ 106第19章 Qt界面开发入门 106附录 107
构造函数
不能为
虚函数
之前一直关注着析构函数为什么要设置为
虚函数
,倒是没有想着
构造函数
可否为
虚函数
的问题,对此,进行一下总结:
构造函数
不能是
虚函数
,原因如下:
虚函数
对应一个虚指针,虚指针其实是存储在对象的内存空间的。如果
构造函数
是虚的,就需要通过 虚指针执行那个
虚函数
表(编译期间生成属于类)来调用,可是对象还没有实例化,也就是内存空间还没有,就没有虚指针,所以
构造函数
不能是
虚函数
。
虚函数
的作用在于通过父类的指针或者引用来调用它的时候能够变成调用子类的那个成员函数。而
构造函数
是在创建对象时自动调用的,不可能通过父类的指针或
为什么析构函数可以为
虚函数
但是
构造函数
不能为
虚函数
构造函数
不能声明为
虚函数
,析构函数可以声明为
虚函数
,而且有时是必须声明为
虚函数
。 不建议在
构造函数
和析构函数里面调用
虚函数
。
构造函数
不能声明为
虚函数
的原因是: 1 构造一个对象的时候,必须知道对象的实际类型,而
虚函数
行为是在运行期间确定实际类型的。而在构造一个对象时,由于对象还未构造成功。编译器无法知道对象 的实际类型,是该类本身,还是该类的一个派生类,或是更深层次的派生类。无法确定。。。 2
虚函数
的执行依赖于
虚函数
表。而
虚函数
表在
构造函数
中进行初始化工作,即初始化vptr,让他指向正确的
虚函数
表。而在
构造函数
为什么一般不定义为
虚函数
?而析构函数一般写成
虚函数
的原因 ?
1、
构造函数
不能声明为
虚函数
1)因为创建一个对象时需要确定对象的类型,而
虚函数
是在运行时确定其类型的。而在构造一个对象时,由于对象还未创建成功,编译器无法知道对象的实际类型,是类本身还是类的派生类等等 2)
虚函数
的调用需要
虚函数
表指针,而该指针存放在对象的内存空间中;若
构造函数
声明为
虚函数
,那么由于对象还未创建,还没有内存空间,更没有
虚函数
表地址用来调用
虚函数
即
构造函数
了 2、析构函...
为什么
构造函数
不能是
虚函数
?析构函数可以是
虚函数
吗?
构造函数
不能声明为
虚函数
,析构函数可以声明为
虚函数
,而且有时是必须声明为
虚函数
。 抽象类中构造和析构均不能使用纯
虚函数
。 为什么
构造函数
不能声明为
虚函数
呢? 1、构造一个对象的时候,必须知道对象的实际类型,而
虚函数
是在运行期间确定实际类型的。如果
构造函数
为
虚函数
,则在构造一个对象时,由于对象还未构造成功,编译器还无法知道对象的实际类型,是该类本身还是派生类。无法确定。 2、
虚函数
的执行依赖于
虚函数
表,而
虚函数
表是在
构造函数
中初始化的,即初始化vptr,让它指向
虚函数
表。如果
构造函数
为
虚函数
,则在构造
C++ 语言
64,647
社区成员
250,476
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章