reference type in cpp
2009-08-25 20:45
281 查看
为什么引用类型一定要在声明的时候初始化呢,
要想清楚这个问题应该站在编译器的角度去思考问题。
比如 声明一个引用没有初始化
int& r;
int b=333;
r=b; //你说r=b是赋值 还是 初始化引用呢?? 这里有二义性,编译器解决不了问题,所以提前到CODING的时候明确 掉。
还有一个就是 const 也参与类型的声明。
const int a 和 int a 是不同的类型,这里到不是可不可修改的问题。估计在编译器 看来 const int 和 int 属于两种不同的类型。
所以关于const变量在赋值的时候要注意了
比如
int a=33;
cosnt int& b=a;; 这里合法
但是
const int a=9099;
int& b=a; 编译错误,因为编译器 将他们看做两个完全不同的类型
当将一个 变量赋给不同的const变量类型时
比如
int a=33;
const double& b=a;
a=5666;
cout<<a<<endl<<b<<endl;
会输出 5666 和33哦?
要想清楚这个问题应该站在编译器的角度去思考问题。
比如 声明一个引用没有初始化
int& r;
int b=333;
r=b; //你说r=b是赋值 还是 初始化引用呢?? 这里有二义性,编译器解决不了问题,所以提前到CODING的时候明确 掉。
还有一个就是 const 也参与类型的声明。
const int a 和 int a 是不同的类型,这里到不是可不可修改的问题。估计在编译器 看来 const int 和 int 属于两种不同的类型。
所以关于const变量在赋值的时候要注意了
比如
int a=33;
cosnt int& b=a;; 这里合法
但是
const int a=9099;
int& b=a; 编译错误,因为编译器 将他们看做两个完全不同的类型
当将一个 变量赋给不同的const变量类型时
比如
int a=33;
const double& b=a;
a=5666;
cout<<a<<endl<<b<<endl;
会输出 5666 和33哦?
相关文章推荐
- Which type to use in Cpp
- 错误 the type "xxxx" is defined in an assembly that is not refernced.You must add a reference to assem
- type dedution and reference collapse in c++ 11(works vc++ 2013)
- RuntimeException: Type "nmethodBucket*", referenced in VMStructs::localHotSpotVMStructs in the remot
- [C/CPP系列知识] Type difference of character literals 和 bool in C and C++
- The hierarchy of the type TestTest is inconsistent。It is indirectly referenced from
- Cannot make a static reference to the non-static method setInAnimation(Animation) from the type View
- Compiler Error Message: CS0234: The type or namespace name 'BorderDetails' does not exist in the class or namespace 'Infragistics.WebUI.Shared' (are you missing an assembly reference?)
- RuntimeException: Type "nmethodBucket*", referenced in VMStructs::localHotSpotVMStructs in the remot
- Maven用Scala编译,bad symbolic reference. A signature in package.class refers to type compileTimeOnly
- Type Conversions in Cpp
- Initialize reference type static fields inline
- Date is a reference type in JavaScript
- 使用$.each方法时出现错误提示: TypeError: invalid 'in' operand a
- How to disable “Type <return> to continue, or q <return> to quit” in gdb?
- 如何在Access中参数化日期类型,以解决Data type mismatch in criteria expression的问题
- LeetCode -- reference binding to null pointer of type 'value_type'
- Fatal error: Call-time pass-by-reference has been removed in
- The type org.apache.axiom.om.OMElement cannot be resolved. It is indirectly referenced from require
- The Atomic classes in Java 5: AtomicInteger and AtomicLong,AtomicReference etc.