C++中 int i 与 int &i 注意事项
2016-10-30 18:38
507 查看
来源:http://blog.csdn.net/qianchenglenger/article/details/16949689
1.int i 传值,int & i 传引用
int i不会回带参数,而int &i可以回带参数,如
[cpp] view plain copy
![](https://code.csdn.net/assets/CODE_ico.png)
- #include <iostream>
- void test1(int i)
- {
- i = 7;
- }
- void test2(int &i) //要限制参数改动,可以加const限制
- {
- i = 7;
- }
- int main()
- {
- int t1 = 10;
- test1(t1);
- std::cout << t1 << std::endl; //输出为10
- int t2 = 10;
- test2(t2);
- std::cout << t2 << std::endl; //输出为7
- return 0;
- }
2. int i 可赋予常量,而int & i 不能
[cpp] view plain copy
![](https://code.csdn.net/assets/CODE_ico.png)
- #include <iostream>
- void test1(int i)
- {
- i = 7;
- }
- void test2(int &i)
- {
- i = 7;
- }
- int main()
- {
- int i = 10; //合法
- int &i1 = 10; //编译错误
- test1(10); //合法
- test2(10); //编译错误
- return 0;
- }
3. int &i 相当于别名,而int i 只是拷贝
[cpp] view plain copy
![](https://code.csdn.net/assets/CODE_ico.png)
- #include <iostream>
- int main()
- {
- int t1 = 10;
- int t2 = 10;
- int i1 = t1; //复制
- int &i2 = t2; //别名
- i1 = 7;
- i2 = 7;
- std::cout << t1 << std::endl; //输出10
- std::cout << t2 << std::endl; //输出7
- return 0;
- }
最后,我们再来看一下个例子
[cpp] view plain copy
![](https://code.csdn.net/assets/CODE_ico.png)
- #include <iostream>
- class A{
- public:
- A(int a, int b):i1(a),i2(b){};
- public:
- int i1;
- int &i2;
- };
- int main()
- {
- A a(45,60);
- std::cout << a.i1 << " " << a.i2 << std::endl;
- return 0;
- }
在电脑上运行之后,你会发现,第一个数字正常,而第二个数字明显是一个未定义的值,例如我运行后得到的结果是
45 1400458944
这是因为我们在构造一个对象的时候,调用了构造函数,而A的构造函数的参数传递为传值方式,所以,当调用时,相当于有一个
[cpp] view plain copy![](https://code.csdn.net/assets/CODE_ico.png)
- int b = 60
![](https://code.csdn.net/assets/CODE_ico.png)
- int &i2 = b;
我们再贴一段程序,和上面的一段相对应,只是,这次,我们将会获得 45 60 的结果
[cpp] view plain copy
![](https://code.csdn.net/assets/CODE_ico.png)
- #include <iostream>
- class A{
- public:
- A(int a, int &b):i1(a),i2(b){};
- public:
- int i1;
- int &i2;
- };
- int main()
- {
- int t = 60;
- A a(45,t);
- std::cout << a.i1 << " " << a.i2 << std::endl;
- return 0;
- }
相关文章推荐
- C++中 int i 与 int &i 注意事项
- C++中关于&的一些。int i 与 int &i 注意事项
- c&c++混合编程的注意事项
- 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int---->解决方法 .
- 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int---->解决方法
- c++ standard library 学习笔记-auto_ptr<T> 注意事项
- C++中的'&'和const的使用注意事项!
- C++ 调用 python 注意事项(转)
- c++之getline(istream && is,string&str,char delim)用法及注意事项
- C++_重载运算符<< ostream流重载注意事项_使自定义数据可以用cout输出
- unsigned int的 注意事项
- .NET下编译C++代码时出现"error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int"错误的解决方法。
- operator=(LONG);报 "error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int"的处理方法
- 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int"错误解决办
- C++ typename 关键字的使用方法和注意事项
- error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
- Request.Cookies["User_ID"]使用注意事项
- .NET工程中以 C 和 C++ 两种方式编译时,函数调用注意事项
- ASP.NET&C#开发的注意事项
- 关于C/C++中 常量应用的注意事项