#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相关推荐

  1. ​VRTK4.0使用总结(三)UI交互​

    ​VRTK4.0使用总结(三)UI交互​ 一.使用VRTK4.0 UI交互需要导入Tilia.UnityUI 包 需要先使用到Interator交互器和射线组件 二.需要与VR交互的画布Canvas需 ...

最新文章

  1. 《算法入门经典大赛——培训指南》第二章考试
  2. Fabio技术手册(2):部署
  3. 香港连续25年被评为全球最自由经济体
  4. 双色球霸主网络问题_霸主–统治和管理API的地方
  5. 带有JSF,Servlet和CDI的DynamicReports和JasperReports
  6. 1-5docker私有镜像仓库
  7. quill一些插件的配置 注意事项
  8. mysql id还原_一次线上DB问题排查(MySQL、事务、MVCC)
  9. 移动APP接口遇到的一些小问题
  10. 小白入职AI数据工程师
  11. linux 上自动执行caffe,linux下caffe的命令运行脚本
  12. 【免费毕设】asp.net服装连锁店管理系统的设计与开发(源代码+lunwen)
  13. Oracle数据库出现问题时,这十个脚本帮你快速定位原因
  14. vscode搭建汇编环境
  15. Spotfire 对 列 数据进行自定义排序
  16. 浅谈AI芯片的简要发展历史
  17. 高德地图有用的API
  18. java翻译后的文件扩展名_Java语言的源程序翻译成字节码之后的扩展名是.______。(填英文,小写)...
  19. 游戏中的Decal(贴花)
  20. 【iOS】开发者账号

热门文章

  1. 断舍离是一种什么智慧?
  2. 怒怼某些自媒体培训机构,吃相不要太难看了!!!
  3. achartengine一个布局中多条动态折线图实时更新效果
  4. 钉钉小程序 - 实现简易表格
  5. 华为V5服务器SAS/SATA硬盘常亮黄灯及解决方案
  6. 已知二叉树前序遍历是ADCEFGHB,中序遍历是CDFEGHAB,要求画出二叉树的结构或写出后序遍历
  7. 三星印度建新工厂,挡得住中国手机吗?
  8. Java处理图片后图片变小了_JAVA改变图片大小,该怎么处理
  9. Chinese Rings (九连环+矩阵快速幂)
  10. ListInteger转为int[]