引用类型可以和指针一样指向某个变量,但两者在使用的时候还是有许多区别,
1.声明一个引用类型后,一定要给他赋值,否则编译通不过,特别是在类中,如果有引用成员变量时,一定要在构造函数的初始化列表中初始化,例如:
class foo
{
public:
foo(){}
private:
int& var;
};
foo f; // Error, 没有初始化引用变量var
2.引用类型在使用时有一定的限制,函数不能返回一个临时变量的引用,例如:
//Error
int& foo(int a, int b)
{
int c;
c = a + b;
return c;
}
变量c是临时变量,返回c的引用可能会引起严重错误
3.引用类型适用于函数传递参数,这是非常方便的,避免了复制拷贝,但要注意的是,传递的参数必须是变量,而不能是数值常量,例如:
int foo(int& a, int& b)
{
return a+b;
}
//
int a =0, b=1, c=2;
char d='d';
a = foo(b, c); //OK
a = foo(b, (int)d); //Error
a = foo(1, 2); //Error
4.引用变量一旦指向某个变量后,就不能再改变它所指向的引用,只能改变指向变量的值,因此如果需要动态改变它所指向的变量,那么引用类型就不适用了,那就该用指针,例如:
int a =10;
int& ref = a;
a = 20; // ref=20
ref = 30; // a=30
分享到:
相关推荐
C++提供了fstream库来实现这一点。 9. **预处理器**:C++的预处理器可以进行宏定义、条件编译等操作,虽然在某些情况下应谨慎使用,但理解其功能可以帮助编写特定环境下的代码。 10. **调试技巧**:掌握GDB等调试...
这一章主要是为了让读者对C++有一个全面的认识,并且学会如何正确地使用这门语言。 - **Item1: 将C++视为多种语言的联合** - C++不仅仅是一种语言,而是由多个子集组成的一个语言联邦。它包含了C风格的语言特性、...
引用是C++中的一种特殊类型的指针,它一旦初始化就不能改变指向的对象。理解引用的关键在于认识到它是一个别名,而不是一个独立的对象。因此,试图初始化引用两次或将其赋值给另一个对象都是错误的。 #### 常见错误...
- 指针参数传递的是内存地址,理解这一点对于正确使用指针至关重要。 **7.5 FREE和DELETE把指针怎么啦** - `free`和`delete`用于释放内存,但它们之间存在差异,了解这些差异有助于正确地管理内存。 **7.6 动态...
对于已经掌握了VC的朋友:这种程度的开发者应该加深自己对系统原理,技术要点的认识。需要选择一些对原理讲解的比较透彻的书籍,这样一来才会对新技术有更多的了解,最好书中对技术的应用有一定的阐述。尽量选择...
C++的虚函数支持动态绑定,也就是说,调用哪个版本的虚函数取决于运行时的对象类型,而不是编译时的指针类型。然而,对于默认参数,情况有所不同。默认参数是在编译时确定的,而不是在运行时。这意味着调用`p->fun()...
A 我对dll的一点认识 一. 没有lib的dll 1.1 建一个没有lib的dll 1.2 调试没有lib的dll 二. 带有lib的dll 2.1 创建一个带有lib的dll 2.2 调试带有引用但没有头文件的dll 三. 带有头文件的dll 3.1 创建一个带有引出...
在定义拷贝赋值运算符时,我们需要注意的是,返回值一定是引用类型,这是因为我们可以进行链式编程而做的,如 `s1 = s2 = s3`。 三、类的析构函数 类的析构函数是用于销毁类的实例对象的,它们负责释放类的资源,...
理解指针的工作原理,包括指针的声明、初始化、解引用以及指针运算,是C++编程的基础。 在这个源码下载中,你将有机会实践以上概念,通过实际操作加深理解。stringlib可能是一个包含字符串处理函数的静态库,你可以...
在编写代码时,对于基本数据类型和引用数据类型应采用不同的处理策略,尤其是在涉及到对象和数组这类引用类型时,更要注意区分修改引用和修改对象属性之间的区别。这样能够帮助我们写出更健壮、更不容易出错的...
18.2 在 C #代码中调用 C++和 VB 编写的组件 .240 18.3 版 本 控 制 .249 18.4 代 码 优 化 .252 18.5 小 结 .254 第五部分 附 录 .255 附录 A 关 键 字.255 附录 B 错 误 码.256 附录 C .Net 名字空间...
结构是值类型,而类是引用类型。 2, 装箱和拆箱(取消装箱) 装箱是值类型到 object 类型或到该值类型所实现的任何接口类型的隐式转换。将一个值的值装箱会分配一个对象实例并将该值复制到新的对象中。关键字 object. ...
这个文件可能包含了关于如何使用`cap_save.cpp`的详细步骤、示例或者库的引用和API文档。 `zxs.txt`文件没有明确的上下文,但可能包含作者的注释、日志信息、使用案例或其他辅助信息。如果`cap_save.cpp`是一个由...
多态性意味着可以使用父类型的指针或引用来指向子类型的对象,并且能够调用子类中重写的父类方法。 JavaScript中的函数也是对象,因此可以被赋值给变量,作为参数传递,或者作为对象的属性存储。这一点为函数式编程...
然 new 运算符返回对一个对象的引用,但与 C、C++中的指针不同,对象的引用是指 向一个中间的数据结构,它存储有关数据类型的信息以及当前对象所在的堆的地址, 而对于对象所在的实际的内存地址是不可操作的,这就保证...