Const references - C++
Const references - C++
我对c++中const引用的概念有一个疑问。
int i =10;
const int &j = i;
cout<<"i="<<i<<" j:"<<j; // prints i:10 j:10
i = 20;
cout<<"i="<<i<<" j:"<<j; // prints i:20 j:10
为什么第二个j
语句不打印新值即20
如果对任何变量的引用都表示它们之间的强绑定,这是如何可能的
这是一个编译器错误。代码应该打印20 20
我不明白为什么j
不会在第二个cout
中打印20
。
我运行了下面的代码:
int main() {
int i =10;
const int &j = i;
cout<<"i="<<i<<" j:"<<j << endl; // prints i:10 j:10
i = 20;
cout<<"i="<<i<<" j:"<<j << endl; // prints i:20 j:10
return 0;
}
它给了我这样的输出:
i=10 j:10
i=20 j:20
查看在线演示:http://ideone.com/ELbNa
这意味着,要么你正在使用的编译器有bug(这种情况不太可能发生,因为它是c++中最基本的东西),要么你没有看到正确的输出(这是最可能的情况)。
const reference表示它不能改变引用的值。然而,referrant可以改变它的值,从而影响引用。我不知道为什么你会得到你所显示的输出。
它实际上改变了,看看这里的输出
这里再补充一点,const
引用不需要左值来初始化它。例如
int &r = 10; //ERROR: lvalue required
const int &cr = 10; //OK
相关文章:
- GotW #88 中的"It doesn’t work for references that are members of objects"是什么意思?
- std::string references、std::regex和boost::filesystem的基本概念
- 如何使用 std::sort with pair and references
- C++:关于"valid pointers and references"的澄清
- 对象文件"Version References"从何而来?
- 如何确定库"references"哪些 dll?
- 如何解决:无法解析"Microsoft.VisualStudio.ProjectSystem.References.UnresolvedBuildDependencyProjectReference"
- std::common_type with references to type_info
- 为什么"universal references"具有与右值引用相同的语法?
- 使用智能指针作为"non-owning references"的优缺点是什么?
- c++ static_cast and references
- 为什么程序员说"pass by reference"真的很"passing references by value?"为什么这很重要?
- opengl on ubuntu Linker error: undefined references
- 使用引用相对于使用指针的优势是否证明偶尔"null-references"是合理的?
- 具有私有静态成员的C++ "undefined references"
- 为什么这给了我"Undefined references to constructors and destructors"?
- 仅使用标准库创建"Vector of References"的标准做法
- 使用C++"How in list all iterators and references unaffected after any operation"的后端过程
- Const references - C++
- 指定枚举基础类型时的"ISO C++ forbids forward references to 'enum' types"