gpt4 book ai didi

c++ - 在构造函数期间调用哪个运算符分配给 const 引用(re.noexcept)

转载 作者:搜寻专家 更新时间:2023-10-31 02:21:13 25 4
gpt4 key购买 nike

当我调用一个将传递的 const & 分配给 const & 成员变量的构造函数时,会发生什么?自 const ref 以来,我的理解“非常少”——没有复制、移动、调用的构造函数等——只是复制可能会变成指针的东西。

例如

class ClassA
{
public:
ClassA(const double a):a_(a){}
const double a_;
};

class ClassB
{
const ClassA &classRef_;
public:
ClassB(const ClassA& a):classRef_(a){}
};

int main()
{
ClassA aObj(5.212);
ClassB bObj(aObj);
}

特别是,如果我想将 ClassB 的函数(例如这里的构造函数)声明为 noexcept,我需要了解什么(如果有的话) A 类

最佳答案

int i;
int &r = i;

r = i 不是一个赋值,它是一个初始化。引用充当“别名”:r 将充当 i

您不能分配引用,只能分配它们的指称:

r = 2; // same as i = 2

这里:

class ClassB
{
const ClassA &classRef_;
public:
ClassB(const ClassA& a):classRef_(a){}
};

在构造函数中,表达式 a 指定一个 ClassA 对象(具有常量左值)。

:classRef_(a) 表示“初始化成员引用classRef_,使其成为a指定对象的别名”。

新引用 classRef_ 将引用与 a 引用相同的对象。 没有复制。

关于c++ - 在构造函数期间调用哪个运算符分配给 const 引用(re.noexcept),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31690064/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com