首页 > 编程语言 >c++常量引用容易踩的坑,修改数据不同步

c++常量引用容易踩的坑,修改数据不同步

时间:2022-09-01 20:26:31浏览次数:65  
标签:同步 常量 int 43 c++ 对象 引用

正常情况下被引用的对象改变,常量引用的值也跟着改变。i和j是同一个对象,所以是同步的:

int i = 42;
const int& j = i;
i = 43;
cout << j << endl;
cout << i << endl;
// i == j == 42;

但存在类型转换时,常量引用绑定的是double到int隐式转换后的临时int对象。i和j不是一个对象,所以数据不同步:

 

double i = 42.5;
const int& j = i;//发生隐式转换,j引用了临时int对象
i = 43;
cout << j << endl;
cout << i << endl;
// j == 42; i == 43;

正是上面那个道理,所以下面的i和j是同一个对象,所以是同步的:

int i = 42.5;//发生隐式转换,i引用了临时int对象
const int& j = i;
i = 43;
cout << j << endl;
cout << i << endl;
// i == j == 42;

 

标签:同步,常量,int,43,c++,对象,引用
From: https://www.cnblogs.com/buachuan/p/16635735.html

相关文章

  • C++ 打印杨辉三角/贾宪三角/帕斯卡三角
    #include<iostream>#include<iomanip>#include<windows.h>#include<fstream>#include<string>usingnamespacestd;#defineN10intmain(){inta[N][N......
  • C++正则匹配字符串
    以下实例使用C++正则从一串混乱的字符串中匹配带小数点的数字点击查看代码#include<iostream>#include<regex>usingnamespacestd;intmain(){smatchres......
  • C++ 之lambda表达式
    C++之lambda表达式[capture](parameters)option->return-type{body}capture:捕获列表,可选捕捉列表总是出现在lambda表达式的开始。实际上,是lambda引出符,编译......
  • C++之常用的算法
    C++之常用的算法1函数对象重载函数调用运算符的类,其对象称为函数对象。一元仿函数/二元仿函数(根据参数个数判定)classMyPrint{public: voidoperator()(intn......
  • UE4 C++学习 浅析UProperty属性说明符
    本文就UProperty是什么?以及UProperty怎么用?做一个简单的总结。什么是UPROPERTY?首先看下官方的解释:  感觉还是比较模糊没看懂有什么用,我们接着往下看 要知道UPR......
  • rsync同步数据
    1.数据获取服务器安装rsyncyum-yinstallrsync2.查看安装情况psaux|greprsyncd  3.编辑密码操作vim/etc/rsyncd.secretsroot:123567 ......
  • 利用shell脚本完成git自动拉取、同步
    #!/bin/bash#paras:$1dir#configsectionUSER=ShawnREMOTE_PATH="~/path/${USER}/${1}"######################functioncurrent_branch(){gitrev-parse......
  • 全局变量与全局常量
    1,全局常量file_1.h#pragmaonce//对于全局常量,我们可以用const限定词,可在不同文件中包含头文件的方式调用全局常量constfloatPI=3.14;2,全局变量file_2.h中......
  • C++ delete进行了什么操作
    #include<iostream>classA{public:voidt(){std::cout<<"helloworld!"<<std::endl;}~A(){std::co......
  • vue方法中的方法怎么同步顺序执行_vue方法同步(顺序)执行:async/await使用 , 使用async搭
    vue方法中的方法怎么同步顺序执行_vue方法同步(顺序)执行:async/await使用项目中有一个地方需要获取到接口返回值之后根据返回值确定之后执行的步骤,使用async搭配await实......