从C到C++ (3)
从C到C++ (3)
一、 C++中增加了引用
1、引用是给某一个变量起别名。引用的一般格式:
类型 &引用名 = 变量名
定义引用时一定要初始化。在实际应用中,引用一般用作参数传递与返回值
2、const 引用
const 引用是指向const对象的应用
3、引用作为返回值
函数返回引用的一个主要目的是可以将函数放在赋值运算符的左边,注意:不能返回对局部变量的引用。
4、引用与指针的区别
1)引用访问一个变量是直接访问,而指针是间接访问。
2)引用是一个变量的别名,本身不单独分配自己的内存空间,而指针有自己的内存空间。
3)引用一经初始化不能在引用其他的变量,而指针可以。
尽可能的使用引用,不得已使用指针(引用的效率高)。
二、 C++中提供了内联函数
当程序执行函数调用时,系统要建立桟空间,保护现场,参数传递以及控制程序执行的转移等等,这些工作需要系统时间和空间的开销。对于代码短小、功能简单,但使用频率很高的情况下,使得程序执行效率降低。
内联函数与带参数宏区别:
1)内联函数在调用时会进行类型检查,另外内联函数会先对实参表达式进行求值,然后传递给形参;而宏调用时只是用实参简单的替换形参。
2)内联函数是在编译的时候,在调用的地方将代码展开的,而宏则是在预处理时进行替换的。
在C++中建议采用inline来替换带参数的宏,C++高层次编程用cons、enum、inline替换宏,低层次编程宏是很灵活的。
三、 新的类型转换运算符
旧式转换:
(T)expr
T(expr)
新式转换:
const_cast<T>(expr) //用来移除对象的常量性,通常为了函数能接受这个实际参数
static_cast<T>(expr) //一般的类型转换
reinterpret_cast<T>(expr) //数据以二进制存在形式重新解释(相当强制类型转换)
dynamic_cast<T>(expr) //执行“安全向下”转型操作,无法用旧式方法进行转型的操作
强制类型转换reinterpret_cast不做任何对齐操作,原先内存模型是什么样转换后还是什么样,只是类型转换了,此方法是不可移植的。而旧式强制类型转换”()”会做一些对齐操作。
随机推荐
- Netbackup客户端安装网络放通端口需求,及测试网络放通方法
192.168.1.101网络放通需求如下: 客户端主机 192.168.1.101 到 服务端主机 192.168.1.100 的1556.13720.13724.1378.13782这5个 ...
- fastJson简单实用
public class FastJsonText { @Test public void text(){ User user1 = new User(); user1.setName("健 ...
- 机器学习基础(HGL的机器学习笔记1)
统计学习:统计学习是关于计算机基于数据构建概率统计模型并运用模型对数据进行预测与分析的一门学科,统计学习也成为统计机器人学习[1]. 统计学习分类:有监督学习与无监督学习[2]. 统计学习三要素:模型 ...
- Android学习笔记_40_系统结构 目录结构
1.系统结构: 一.应用程序层 Android平台不仅仅是操作系统,也包含了许多应用程序,诸如SMS短信客户端程序.电话拨号程序.图片浏览器.Web浏览器等应用程序.这些应用程序都是用Java语言编写 ...
- centos6: mysql+nginx+php
安装配置: mysql: http://dev.mysql.com/doc/mysql-yum-repo-quick-guide/en/ yum repolist enabled | grep mys ...
- c# 分布式系统开发
开篇吹牛,吹大牛了各位. 接连几篇博文,已经将了我们系统常用的东西,主要针对服务端,非桌面系统. 聊了这么久了,最后将这所有内容打包,完成一个系统.可能称为组件才合适,因为我没有提供启动程序. 每一个 ...
- rest_framework --- viewsets
viewsets :from rest_framework import viewsets #导入方式 ViewSetMixin(object): 这个类,大致作用就是重写了as_view()方法,假 ...
- vue.esm.js:578 [Vue warn]: Missing required prop
问题: 解决: required: true,属性是,这个必须填写
- BZOj1261: [SCOI2006]zh_tree(dp)
Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 400 Solved: 272[Submit][Status][Discuss] Descriptio ...
- solr6.6教程-core的添加(二)
1.什么是core core是solr的一个索引库,可以理解为一个数据库,core可以根据需要,创建多个. 2.创建core 首先进入到solrhome文件夹(D:\solrhome),创建一个文件夹 ...