不存在指向空值的引用?

不存在指向空值的引用这个事实意味着使用引用的代码效率比使用指针的要高,因为在使用引用之前不需要测试它的合法性:

1 void printDouble(const double& rd)
2 {
3     cout << rd; // 不需要测试rd,它肯定指向一个double值
4 } 

相反,指针则应该总是被测试,防止其为空:

1 void printDouble(const double *pd)
2 {
3     if (pd) { // 检查是否为NULL
4         cout << *pd;
5     }
6 } 

奇技淫巧:

1 int main()
2 {
3     int *a = 0;
4     int& b = *a;//说好的不能为空呢?
5
6     return 0;
7 }

不存在指向空值的引用?,布布扣,bubuko.com

时间: 2024-10-27 00:46:56

不存在指向空值的引用?的相关文章

引用,引用形参,指针形参与指向指针的引用形参,内存泄露及free相关

由做UVa133引发的一系列问题及讨论 1.引用类型    C++ Primer P51 引用就是对象的另一个名字,使用多个变量名指向同一地址.实际程序中,引用主要用作函数形参. 复合类型.不能定义引用类型的引用,但可以定义任何其他类型的引用. 格式: 类型名&  标示符=已声明的常变量; 2.引用形参    C++ Primer P201-205 非引用形参有普通的.指针形参.const形参(可传const对象或非const对象) 引用形参,3种情形:@修改实参,或返回多个值  @避免复制大型

指向对象的引用置空---与内存泄漏

import java.util.Arrays; public class Stack { private static final int INIT_SIZE = 10; private Object[] datas; private int size; public Stack() { super(); datas = new Object[INIT_SIZE]; } public void push(Object data){ if (size == datas.length) { ext

EC笔记,第二部分:10.让=返回指向*this的引用

Effective C++ 学习笔记 10 让=返回指向*this的引用 Table of Contents 1. 原因 2. 建议:在没有充分理由标新立异前,最好的做法是遵从传统. –by SkyFire 1 原因 在C++中,连锁赋值是合法的,新类型的=操作符应该尽量遵从这一规定(其 实他并不是规定),对于你的类,应该可以这样操作: MyClass a; MyClass b; MyClass c; a=b=c; 2 建议:在没有充分理由标新立异前,最好的做法是遵从传统. Author: Ub

指向指针的引用和指向指针的指针

1. 指向指针的引用 #include <cstdlib> #include <iostream> using namespace std; // int *&lhs 的定义应该从右向左理解: // lhs 是一个引用,与指向 int 的指针相关联. // 也就是说,lhs 是传递进 ptrswap 函数的指针的别名. // 注意:不能这样定义:int &*lhs,编译报错提示为:cant declare pointer to "int &&quo

读书笔记 effective c++ Item 10 让赋值运算符返回指向*this的引用

一个关于赋值的有趣的事情是你可以将它们链在一起: 1 int x, y, z; 2 3 x = y = z = 15; // chain of assignments 同样有趣的是赋值采用右结合律,所以上面的赋值链被解析成下面这个样子: 1 x = (y = (z = 15)); 在这里,15被赋值给z,然后赋值的结果(更新的z)被赋值给y,再然后赋值的结果(更新的Y)被赋值给x. 实现这个赋值链的方法是使赋值返回指向左边参数的引用,这也是你在为你的类实现赋值运算符的时候应该遵守的约定: 1 c

指向指针的引用

#include<iostream> using namespace std; int main() { int a=1; int *p=&a; int * & t=p;//引用简单点说就是一个变量的别名,它的本质是一个指针,t和p都是指向同一个变量,当t的内容变了的时候,p也跟着变 cout << *t << endl; return 0; }

08、指向指针的引用

引用本身并不是一个对象,因此不能定义指向引用的指针,但指针是对象,可以对指针进行引用. 1 int i = 10; 2 int* p = &i; 3 int *&p2 = p; // 指针的引用 原文地址:https://www.cnblogs.com/tito/p/12359122.html

引用和指向指针的引用

引用,r为变量i的引用,引用类型为int: <span style="white-space:pre"> </span>int i = 0; <span style="white-space:pre"> </span>int &r = i; <span style="white-space:pre"> </span>r = 100; 指针的引用,r为变量p的引用,引用

什么时候使用引用?和什么时候使用指针

什么时候使用引用?和什么时候使用指针 1.问题提出: 当一个类的对象作为实参数传递时,使用值传递和引用传递有什么区别? 比如: DateType ExampleFun(CString &strFileName,...)与 DateType ExampleFun(CString strFileName,...) 解答之前,我们先来看2个基本的概念:形参和实参. ->通俗的讲:形参是形式上的参数,实参是实际的参数; ->详细的讲:形参只是对实参的一种抽象类型描述,只是声明一个函数(方法)能