c++引用小问题!

两段程序

string version(const string &s1,const string &s2)

{

string temp;

temp =s2+s1+s2;

return temp;

}

//  返回的是string 对象version,temp在运行此函数后就被释放,。temp创建一个无名对象,无名对象被返回给,version。

const string &version(const string &s1,const string &s2)

{

string temp;

temp =s2+s1+s2;

return temp;

}
//返回的是一个引用,但是temp在函数结束时就被释放,所以编译器会报错。

时间: 2024-12-15 06:49:54

c++引用小问题!的相关文章

c++中引用和指针的区别

1.指针和引用的主要区别. 引用是为变量起另一个名字(小名),一般在变量初始化时,初始值直接拷贝给变量,定义引用时,把引用(小名)和初始值“绑定”在一起,而不是将初始值拷贝给引用.因为 无法将引用重新绑定到另一个对象,所以引用必须初始化. 举个例子: 有个变量叫张三,张三=2.给张三起个小名叫小三,即小三=张三.定义引用”小三“时必须针对一个对象,一旦定义完成,”小三“就不能再指定别的变量,所以起小名时,必须初始化(针对一个大名). 引用本身不是一个对象,不能定义引用的引用(引用只是一个小名,上

Yii2的相关学习记录,alert等美化、confirm异步、session中的flash及小部件的使用(六)

呃,系统自带的alert.confirm等弹出框实在是难看,作为一个颜控,这能忍? 这里我用的是kartik-v/yii2-dialog,这个是基于bootstrap3-dialog这个来做了一些常用alert.confirm和dialog的小部件封装,当然了,本质上还是bootstrap3-dialog,可以用原生的方法,原生方法的用法点这里,而bootstrap3-dialog又是基于bootstrap3的modals做的封装.嗯,基本关系就是这样.在搜索这个相关知识时,经常会看到有人提到b

正则学习三 (小括号作用)

var reg=/^18|19$/ //结果可匹配:18,19, 189, 119, 819,181, 1819 意思为: *18或者19 *以18开头或以19结尾, *以1开头,9结尾,当中包含8或1 var reg=/^(18|19)$/ //结果:18, 19 //():正则中的分组,也可以理解为一个大正则中的一个小正则(包起来部分是一个整体),在正则中可以使用小括号改变一些默认优先级//小分组第二个作用:分组引用//小分组第三个作用:分组捕获 //分组引用:\1或\2...出现和第n个分

微信小程序视图层WXS_小程序WXS模块

微信小程序视图层WXS_小程序WXS模块 微信小程序的WXS 代码可以编写在 小程序wxml 文件中的 <wxs> 标签内,或以 .wxs 为后缀名的文件内. 模块 每一个微信小程序的 .wxs 文件和 <wxs> 标签都是一个单独的模块. 每个模块都有自己独立的作用域.即在一个模块里面定义的变量与函数,默认为私有的,对其他模块不可见. 一个模块要想对外暴露其内部的私有变量与函数,只能通过 module.exports 实现. .wxs 文件 在微信开发者工具里面,右键可以直接创建

Golang学习笔记(1)---go程序一般结构

Go程序是通过 package来组织的(与python的库类似) 只有package名称为main的包可以包涵main函数(同时main函数也是一个程序的入口) 一个可执行程序有且仅有一个main包 通过import关键字来引入其他非main包 通过const关键字来进行常量的定义 通过在函数体外部使用var关键字来进行全局变量的声明与赋值 通过type关键字来进行结构(struct)或接口(interface)的声明----一般(自定义)类型 通过func关键字来进行函数的声明 一般格式为:

关于HTMl CSS

HTML  结构       CSS   表现         JS  行为 首先说一个SEO,搜索引擎优化 标准文档流:(1)前提:在没有css的干预下     (2)块级元素:独占一行,可定义宽和高      (3)行内元素:并排显示,宽度自动 HTML(Hyper Text Markup Language)超文本标记语言 标签就是机器语言的一种标识 <! DOCTYPE html>  文档类型定义 <meta charset="UTF-8">字符编码集  

a++和++a左值问题

a++和++a,前缀和后缀哪一个可以作为左值,这个问题让我忙活了很久,终于有了些许突破. a++和++a在做左值的时候有不同,那么左值它首先必须是有特定地址的才能作为左值,否则赋值就没有具体对象.再看看a++和++a.a++的意思是先复制一份临时数据出来参与周边环境的运算,再自加变量a,可见a++用来参与运算的是一份复制出来的临时数据,这个数据是临时存在而没有固定地址的,不是一个真正的变量.++a的意思是先自加变量a,再将变量放到周边环境参与运算,那么++a用来参与运算的是有具体地址的变量,所以

django知识回顾

一.web框架 1.web框架本质 众所周知,对于所有的web应用,本质上其实就是一个socket服务端,用户的浏览器其实就是一个socket客户端 1.浏览器(socket客户端) 2.发送IP和端口:http://www.baidu.com:80/index/ 3.请求方式: GET:请求头: 如:http1.1 /index?p=123 请求体: 无内容 POSt:请求头 http1.1 /index?p=123 请求体 4.接收响应 普通响应:页面直接显示 重定向响应:再起一次Http请

2015.12.21 内存管理(memory management)

Memory Management 1.什么是内存管理? 程序在运行过程中管理内存分配的过程,当需要内存的时候就申请一片内存空间,不需要就释放掉. 2.如何去管理内存 站在分配对象拥有权的角度来操作内存. 3.内存管理的两种办法 a. MRR(Manual Retain Release)手动管理,实现的机制:reference counting(引用计数机制). b. ARC(Auto Reference Counting)自动引用计数,实现机制:系统在程序编译阶段自动添加了释放对象的办法. 4