C++“(已隐式声明)--它是已删除的函数 ” “尝试引用已删除的函数”知识点MARK
今天写一个简单的文件处理工具类时遇到了一个新bug,是一个之前忽略掉的知识点,特此mark一下。
错误如下:
c++类在初始化的时候有两种方式:
1. M_CLASS m_class(...);
2. M_CLASS m_class = M_CLASS(...);
编译器对二者处理的不同之处在于:前者通过构造函数直接对对象m_class中的成员变量进行赋值,而后者则是先初始化一个临时变量并对其赋值,然后将该临时变量赋值给m_class,然后销毁这个临时变量。
那么问题来了,如果M_CLASS包含的成员变量不能直接赋值,那么编译器就会报出如上图所示的错误。而我定义的IOFileManager这个类里面的成员变量就是两个文件流,是不可以直接赋值的!同理,包含了不可直接赋值的成员变量的类的对象也是不能够直接赋值的。
https://blog.csdn.net/crazy_father/article/details/46660607
所以这里初始化对象时应该采用第一种方式,或者用new来定义对象指针,还或者可以把对变量赋值的操作从构造函数中移到另外的成员函数中。
M_CLASS* m_class = new M_CLASS(...);
以上。
C++“(已隐式声明)--它是已删除的函数 ” “尝试引用已删除的函数”知识点MARK相关推荐
- 解决E1776:无法引用 函数 “A::A(const A)“ (已隐式声明) -- 它是已删除的函数
出错原因 先介绍下博主遇到这个错误的背景情况. 有一个类A,没有定义默认构造函数A(): class A{int m_val=0;int m_type=0;A(int val):m_val(val){ ...
- c语言 隐式声明,关于C#:隐式函数声明和链接
最近,我了解了C语言中的隐式函数声明.主要思想很明确,但在这种情况下,我对理解链接过程有些麻烦. 考虑以下代码(文件a.c): #include int main() { double someVal ...
- 警告:隐式声明与内建函数‘exit‘不兼容解决方案
警告:隐式声明与内建函数'exit'不兼容解决方案 参考文章: (1)警告:隐式声明与内建函数'exit'不兼容解决方案 (2)https://www.cnblogs.com/davytitan/p/ ...
- C语言中的隐式声明是什么,有什么危害?warning: implicit declaration of function ‘xxx’
今天编译一个代码,提示CUSTOM_LAYER里面有一个C文件函数gettimeofday()隐式声明,用man手册查了一下,需要包含头文件#include <sys/time.h> 那么 ...
- 小心编译器的隐式声明
小心编译器的隐式声明 引子: 在一个ecos项目中出现一个奇怪的问题,内核标准线程休眠函数cyg_thread_delay()在有的地方可以正常执行休眠,有的地方则一休眠不再醒过来. 问题跟踪 在cl ...
- #C语言#警告:隐式声明函数‘xxx’ [-Wimplicit-function-declaration]
推荐阅读:C语言实现2048小游戏-粤嵌GE6818嵌入式系统实训 C语言编译时报错: 警告:隐式声明函数'xxx' [-Wimplicit-function-declaration] 加下对应函数的 ...
- 函隐式声明函数是什么意思
由于编译器在处理函数调用代码时没有找到函数原型,只好根据函数调用代码做隐式声明. 为什么编译器在处理函数调用代码时需要有函数原型?因为必须知道参数的类型和个数以及返回值的类型才知道生成什么样的指令.为 ...
- 函数的隐式声明 及 rsp,rbp,被调用者和调用者保存的寄存器standerd manuel(Caller/Callee - saved registers)
函数的隐式声明 https://blog.csdn.net/liangbo930522/article/details/73733415 mpx-linux64-abi.pdf https://sof ...
- C语言一定要有函数声明吗,1 什么是C语言的隐式函数声明在C语言中,函数在调用前不一定非要声明。如果没有声明,那么编译器会自动按照一种隐式声明的规则,为调用函数的C代码产生汇编代码。下...
1 什么是C语言的隐式函数声明 在C语言中,函数在调用前不一定非要声明.如果没有声明,那么编译器会自动按照一种隐式声明的规则,为调用函数的C代码产生汇编代码.下面是一个例子: int main(int ...
最新文章
- 技术直播:1小时突击Java工程师面试核心(限免报名)
- JavaWeb学习笔记——DOM4J
- [Jsp] 如何在JSP页面快速输出从Servlet接收的数据_看JSTL常用C标签的威力
- 3.Struts2的输入验证
- 【TarsosDSP】TarsosDSP 简介 ( TarsosDSP 功能 | 相关链接 | 源码和相关资源收集 | TarsosDSP 示例应用 | TarsosDSP 源码路径解析 )
- html, xhtml和xml
- Android 发起加入QQ群、打开网址、启动拨打电话界面
- 百度BAE JAVA环境项目部署和调试
- 人月神话阅读笔记(2)
- iOS视频录制及gif图片制作
- mac打开注册机显示“您没有权限来打开应用程序
- IDEA Error occurred during initialization of VM
- win10计算机管理中没有本地用户和组怎么办
- @RequestBody、 @RequestParam 、 @PathVariable 和 @Vaild 注解的使用及区别
- HBuilderX连接苹果手机iPhone预览移动端页面
- 洛谷CF499B Lecture + 映射map
- 【超标量】分支预测的方向预测总结
- html div 100 无效,HTML / CSS - IE中div没有100%高度
- Cow Tennis Tournament
- 配置ubuntu20.04 LTS深度学习工作站教程