首页 > C++ 中low-level const 初始化问题

C++ 中low-level const 初始化问题

<<C++ Primer 5th>> P213 英文版
6.2.3 节
"We can initialize an" object with a low-level const from a nonconst object but not vice versa"

但是我下面这样写的话,为什么没报错呢?这难道不是low-level对象向nonconst对象赋值吗?

const string &cstString = "Why";
string normalString= cstString ;

但是如果有一个函数

void why(string &tryagain)
{
    cout << "Dont know Why" << endl;
}

在main()中调用方法时这样写的话就会提示错误(这倒是和书上写的一致)

const string &cstString = "why";
why(cstString) ;

一样都是用low-level object来初始化 nonconst object,为什么第一种没报错,而第二种却报错呢?


string normalString = cstString ; //发生了一次拷贝
string& normalString = cstString ; //没有发生拷贝,但是编译会报错,不能把const对象绑给non-const引用
【热门文章】
【热门文章】