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

标签 c++ reference noexcept

当我调用一个分配传递的 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 ,我需要了解什么(如果有的话)ClassA

最佳答案

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/

相关文章:

android - Android NDK 中的 std::thread 被错误地卡住了

Java引用变量管理?

c++ - 引用是否有存储位置?

c++ - 在 C++17 中使用 noexcept 的 std::function

c++ - 在循环外使用for循环变量是错误的吗?

c++ - 编译同一类的两个不同实现

c++ - 返回指针的方法,指向在另一个 header 中声明的数组对象,

C++ 数组通过引用传递,但是这个怎么理解呢?

c++ - noexcept 一个函数返回一个具有抛出析构函数的类