C++编程思想(2nd卷一):引用和拷贝构造函数
2009-06-26 22:21
218 查看
引用就像能自动地被编译器间接引用的常量型指针。它通常用于函数的参数表中和函数的返回值,但也可以独立使用。
使用引用时有一定的规则:
1.当引用被创建时,它必须被初始化(指针则可以在任何时候被初始化)。
2.一旦一个引用被初始化为指向一个对象,它就不能改变为另一个对象的引用(指针则可以在任何时候指向另一个对象)。
3.不可能有NULL引用。必须确保引用是和一块合法的存储单元关联。
最经常看见引用的地方是在函数参数和返回值中。当引用被做函数参数时,在函数内任何对引用的更改将对函数外的参数产生改变。如果从函数中返回一个引用,必须像从函数中返回一个指针一样对待。当函数返回时,无论引用关联的是什么都应该存在,否则,将不知道指向哪一个内存。
指针引用:
如果想改变指针本身而不是它所指向的内容,可以把函数参数变成指针的引用,用不着取得指针的地址。
void increment (int*& i) { i++; }
这样,指针本身增加了,而不是它指向的内容增加了。
因为拷贝构造函数实现按值传递方式的参数传递和返回,所以在简单结构情况下,编译器将有效地创建一个默认拷贝构造函数。
有一个简答的技术防止通过按值传递方式传递:声明一个私有拷贝构造函数。
使用引用时有一定的规则:
1.当引用被创建时,它必须被初始化(指针则可以在任何时候被初始化)。
2.一旦一个引用被初始化为指向一个对象,它就不能改变为另一个对象的引用(指针则可以在任何时候指向另一个对象)。
3.不可能有NULL引用。必须确保引用是和一块合法的存储单元关联。
最经常看见引用的地方是在函数参数和返回值中。当引用被做函数参数时,在函数内任何对引用的更改将对函数外的参数产生改变。如果从函数中返回一个引用,必须像从函数中返回一个指针一样对待。当函数返回时,无论引用关联的是什么都应该存在,否则,将不知道指向哪一个内存。
指针引用:
如果想改变指针本身而不是它所指向的内容,可以把函数参数变成指针的引用,用不着取得指针的地址。
void increment (int*& i) { i++; }
这样,指针本身增加了,而不是它指向的内容增加了。
因为拷贝构造函数实现按值传递方式的参数传递和返回,所以在简单结构情况下,编译器将有效地创建一个默认拷贝构造函数。
有一个简答的技术防止通过按值传递方式传递:声明一个私有拷贝构造函数。
相关文章推荐
- C++编程思想(2nd卷一):引用和拷贝构造函数
- 【书摘】C++编程思想:引用和拷贝构造函数
- C++编程思想笔记——引用和拷贝构造函数
- C++笔记——c++编程思想(上)第十一、十二、十三章 引用和拷贝构造函数,运算符重载,继承组合等
- 引用和拷贝构造函数 --C++编程思想
- C++ 编程思想——引用和拷贝构造函数
- C++编程思想(2nd卷一):函数重载与默认参数
- C++编程思想(2nd卷一):模板简介
- C++编程思想(2nd卷一):名字控制
- C++编程思想(2nd卷一):模板简介
- C++编程思想(2nd卷一):常量
- C++编程思想--拷贝构造函数
- C++编程思想之默认拷贝构造函数
- C++编程思想(2nd卷一):内联函数
- C++编程思想(2nd卷一):名字控制
- C++编程思想(2nd卷一):运算符重载
- C++编程思想(2nd卷一):函数重载与默认参数
- C++编程思想(2nd卷一):运算符重载
- C++编程思想(2nd卷一):动态对象创建
- C++编程思想(2nd卷一):常量