C++对象构建与使用,error: taking address of temporary [-fpermissive]
error: taking address of temporary [-fpermissive]
获取临时对象的地址,编译器是不允许的.
这里要理解什么是临时对象,
临时对象就是无名对象,在语句行上直接用类生成一个对象,
它的生命周期是在该行创建,又在该行销毁.
对于一个已经销毁或行将销毁的对象,你拿到它的地址是没有意义的,所以编译器这个婆婆就武断的告诉你,别拿这个地址,你拿它没有用,不许拿,它是临时对象地址.
临时对象在该行还是有意义的,例如qt就用qDebug()临时对象向屏幕输出打印信息.
下面给个简单的例子来理解对象的构建释放过程及临时对象的构建释放过程
#include <stdio.h>
// 用this 指针,可以区分到底哪一个对象被构建和销毁
struct A {int v;A(int x) {v=x;printf("construct! v:%d,p:%p\n",v,this);}A(){v=0;printf("construct! 0,p:%p\n",this);}A(const A& a){v=a.v;printf("copyed! v:%d,p:%p\n",v,this);}A& operator=(const A& a){v=a.v;printf("assigned! v:%d,p:%p\n",v,this);}~A(){printf("destructed! p:%p\n",this);}
};/* 研究对象创建方式, 尤其是临时对象的生命周期* 打开,关闭相关的注释,编译运行可以了解其工作实质*/
int main()
{
// A(1); //临时对象, 在该行创建,在该行又销毁A a1 = A(1); //临时对象被优化掉,仅进行一次整数构造
// A a1; //默认构造;
// a1 = A(1); // 赋值构造,临时对象被创建,在该行又被销毁
// A a2(2); //整数构造
// a1=a2; //赋值构造
// void *p = & A(2); //产生错误 error: taking address of temporary [-fpermissive]printf("haha\n");
// printf("what's this %p\n",&a1);return 0;
}
C++对象构建与使用,error: taking address of temporary [-fpermissive]相关推荐
- taking address of temporary错误
前些天将一个项目从VS2013移植到Qt上,遇到了这样一个问题: Dispatch->XCDispatchMessage(&linev()); //error:taking addres ...
- Android调用WebService系列之对象构建传递
上一篇我们讲了如何封装Android调用WebService的能力,把上一章的类加入我们便有了与WebService通讯的能力.往往我们会遇到WebService调用是通过对象来进行实际交互调用的.于 ...
- java安全编码指南之:对象构建
文章目录 简介 构造函数的异常 Finalizer Attack 解决Finalizer Attack 使用final class 使用final finalize方法 使用flag变量 使用this ...
- Apollo6.0代码Lattice算法详解——Part6:轨迹评估及碰撞检测对象构建
Apollo6.0代码Lattice算法详解--Part6:轨迹评估及碰撞检测对象构建 0.前置知识 1.涉及主要函数 2.函数关系 3.部分函数代码详解 3.1 lattice_planner.cc ...
- php多个构造方法,PHP高级对象构建多个构造函数的使用方法
构造对象是PHP面向对象编程设计的重要一课,在最简单的情况下,普通的函数是足够的,但如果要进行更复杂的设计,函数可能没办法驾驭,本文讲述的是PHP高级对象构建多个构造函数的使用方法. 复制代码 代码如 ...
- Android之jni编译出现error: jump to label ‘XXXX’ [-fpermissive]解决办法
1.问题 Android jni里面编写C++代码的时候,我就写了个goto语句,特么也提示下面的错误 error: jump to label 'XXXX' [-fpermissive] 这不是日了 ...
- mysql error innodb_MySQL无法启动: InnoDB Error:unable to create temporary file
MySQL无法启动.错误日志中提示:InnoDB:Error:unabletocreatetemporaryfile以下是错误信息的详细内容:11112221:32:03[Note]Plugin'FE ...
- vcftools报错:Writing PLINK PED and MAP files ... Error: Could not open temporary file.解决方案
vcftools报错:Writing PLINK PED and MAP files ... Error: Could not open temporary file.解决方案 参考文章: (1)vc ...
- 针对Mrpt/build中的make时u出现的问题ccache: error: Failed to create temporary file for /home/jyy/.ccache/tmp/tm
问题:ccache: error: Failed to create temporary file for /home/jyy/.ccache/tmp/tmp.cpp_stderr: Permissi ...
最新文章
- 遥控窗帘c语言程序,使用AT89C2051的红外遥控窗帘
- knockout学习笔记目录
- sklearn 笔记:make_blobs 生成聚类数据
- Box Shadow CSS教程–如何向任何HTML元素添加投影
- [Leetcode][第216题][JAVA][数组之和3][回溯]
- VS2010调试快捷键
- mysql日期为00_MySQL 8.0.13 设置日期为0000-00-00 00:00:00时出现的问题
- WORD表格中文字显示不完整怎么办?
- html2张图片垂直居中,任意图片实现垂直居中的三种方法(兼容性还不错)
- 图像局部特征(四)--FAST-ER角点检测子
- Java IO学习笔记(五):内存操作流
- ajax submittype,AjaxSubmit()提交file文件
- 苹果计算机显示错误怎么按,教你解决苹果电脑装windows7提示磁盘分区错误的方法...
- STM32平台RT-Thread最小系统移植搭建 - STM32F107VCT6
- MATLAB立体椭球,matlab拟合三维椭球
- 【离散数学】 MIT 6.042J 笔记 - Lecture 1 Introductions and Proofs
- 【iMessage苹果群发】OpenSSL将重修立连接
- 【市场调查与预测】廊坊师范学院大学生洗发水使用情况调查(课程论文)
- php 生成条码插件,PHP版条码生成器
- 嵌入式系统开发笔记25:win10防火墙打开特定端口