C++ pointerreference
2024-05-09 12:20:02
#include <iostream>
#include <vector>
/**pointer与reference区别:引用必须被初始化,初始化后不被改动,pointer没有这个要求,可以初始化(初始化后可以被改动),也可以不初始化(但存在风险)指针一般用于指向某个对象后,可以修改它指向另一个对象。而指向某一个对象后不再改变其指向其它对象,则应该使用引用
*/void Test1()
{int a = 10;int b = 20;int *p = &a; // 初始化std::cout<<p<<","<<*p<<std::endl;p = &b; // 初始化后可以被改变std::cout<<p<<","<<*p<<std::endl;int *np ; // 可以不被初始化,但存在风险int &r = a; // 引用需要初始化std::cout<<a<<std::endl; // 10r = b;std::cout<<a<<std::endl; // 20, r还是代表a(是a的别名,与a绑定了就不变了)}void Test2()
{std::vector<int> v(3,0); // 元素都被初始化为0for (auto it: v) {std::cout<<it<<std::endl; }// vector内部实现了operator[]操作符,并返回对象引用(直接可以对对象进行修改)v[0] = 10;v[1] = 20;v[2] = 30;for (auto it: v) {std::cout<<it<<std::endl; // 10,20,30}
}class Test{public:Test(int id):m_id(id){std::cout<<"constructor"<<std::endl;}Test(const Test& t):m_id(t.m_id){std::cout<<"copy constructor"<<std::endl;}~Test(){std::cout<<"destructor"<<std::endl;}int m_id;
};void TestParamCopy(const Test r){}void TestParamRefer(const Test& r){}
void Test3()
{// 用在函数参数中,避免拷贝操作(如果参数是对象,需要调用拷贝构造函数,还要进行析构操作,消耗时间成本)Test t(2);TestParamCopy(t); // 实参传递给形参时,就会调用拷贝构造,生命周期结束调用析构TestParamRefer(t); // 实参形参传递时,无任何成本}
int main()
{Test1();Test2();Test3();return 0;
}
C++ pointerreference相关推荐
- VRTK4.0使用总结(三)UI交互
VRTK4.0使用总结(三)UI交互 一.使用VRTK4.0 UI交互需要导入Tilia.UnityUI 包 需要先使用到Interator交互器和射线组件 二.需要与VR交互的画布Canvas需 ...
最新文章
- 《算法入门经典大赛——培训指南》第二章考试
- Fabio技术手册(2):部署
- 香港连续25年被评为全球最自由经济体
- 双色球霸主网络问题_霸主–统治和管理API的地方
- 带有JSF,Servlet和CDI的DynamicReports和JasperReports
- 1-5docker私有镜像仓库
- quill一些插件的配置 注意事项
- mysql id还原_一次线上DB问题排查(MySQL、事务、MVCC)
- 移动APP接口遇到的一些小问题
- 小白入职AI数据工程师
- linux 上自动执行caffe,linux下caffe的命令运行脚本
- 【免费毕设】asp.net服装连锁店管理系统的设计与开发(源代码+lunwen)
- Oracle数据库出现问题时,这十个脚本帮你快速定位原因
- vscode搭建汇编环境
- Spotfire 对 列 数据进行自定义排序
- 浅谈AI芯片的简要发展历史
- 高德地图有用的API
- java翻译后的文件扩展名_Java语言的源程序翻译成字节码之后的扩展名是.______。(填英文,小写)...
- 游戏中的Decal(贴花)
- 【iOS】开发者账号
热门文章
- 断舍离是一种什么智慧?
- 怒怼某些自媒体培训机构,吃相不要太难看了!!!
- achartengine一个布局中多条动态折线图实时更新效果
- 钉钉小程序 - 实现简易表格
- 华为V5服务器SAS/SATA硬盘常亮黄灯及解决方案
- 已知二叉树前序遍历是ADCEFGHB,中序遍历是CDFEGHAB,要求画出二叉树的结构或写出后序遍历
- 三星印度建新工厂,挡得住中国手机吗?
- Java处理图片后图片变小了_JAVA改变图片大小,该怎么处理
- Chinese Rings (九连环+矩阵快速幂)
- ListInteger转为int[]