从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不做任何对齐操作,原先内存模型是什么样转换后还是什么样,只是类型转换了,此方法是不可移植的。而旧式强制类型转换”()”会做一些对齐操作。
随机推荐
- Visual Stuio 2010 常用快捷及操作
1.如果你想复制一行代码(超级长,鼠标拖老久的),只需要在这行的空白处 CTRL+C 同理,剪贴一行 CTRL+X 删除一行 CTRL+L 2.显示方法里的参数,以前每次都是手动删括号. CTRL+S ...
- 使用shell调用python中的函数
最近遇到一个需求,需要通过shell调用python中的一个函数,发现其实也挺简单的: python脚本如下: test.py: import ConfigParser config = Config ...
- libevent-select模型分析
下面内容为windows下select模型分析,原博客链接 http://blog.csdn.net/fish_55_66/article/details/50352080 https://www.c ...
- 从OC和C#中找乐趣:相同又不同的delegate
不想说话,本来第一段打了一大堆废话,结果浏览器崩溃了...直接进入正题吧.看Demo: C#里面也有delegate,我今天的目的就是模仿着OC里面的写法来写一个网络请求模拟类.先建一个“Protoc ...
- 超简单,快速修改Oracle10g的默认8080端口
因为Oracle数据库默认的端口是8080,这也是tomcat服务器的默认端口. 为了避免端口冲突,我们通常会修改掉其中一个. 这里我们选择修改Oracle数据库的端口. 第一步:以管理员身份运行cm ...
- Graphics Card Notes | 烧卡日记(显卡常识笔记)
[ a comparison of several popular Graphics cards ]
- 【Linux-CentOS】在无互联网-内网环境的Windows7主机上安装CentOS双系统,从安装到放弃
2018.12.3 日更新:本文仅作为无互联网环境下安装的参考.更推荐在互联网环境下安装软件和使用系统,毕竟会自动安装依赖包,比较方便. 因个人办公电脑装的盗版Win7总是蓝屏,影响工作,加之看到 W ...
- sql字段为datetime,插入''的时候默认为1900年
Microsoft SQL Server Database Engine 用两个 4 字节的整数内部存储 datetime 数据类型的值. 第一个 4 字节存储“基础日期”(即 1900 年 1 月 ...
- 在body中的AngularJS模块
<!DOCTYPE html><html><head><meta http-equiv="Content-Type" content=&q ...
- vi常用命令学习
(1)移动光标 h : 左移光标l : 右移光标j : 下移光标k : 上移光标 w : 移动到下一个单词词头b : 移动到上一个单词词头e : 移动到本单词的尾部 0 :移动到当前行的开端$ :移动 ...