Thinking in C++读书笔记 (2)

版权声明:本文为博主原创文章,转载请注明出处! https://blog.csdn.net/peopleqinlei/article/details/52894553

11.2 C++中的引用

  • 应用要点是,任何引用必须和存储单元联系。访问引用时,就是在访问那个存储单元。
  • 当引用被创建时,它必须被初始化。
  • 一旦一个引用被初始化为指向一个对象,它就不能改变为另一个对象的引用。

11.2.1.2 指针引用

C++中尝试改变指针本身

#include <iostream>
using namespace std;

//如果改成void increment(int* i){i++;}
//则传入的是i这个指针的一份拷贝,即使++也是增加了形参的值,而不会影响main()中的i的地址
void increment(int*& i){ 
    i++; 
}

int main(){
    int a=10;

    int* i = &a;
    cout << "i = " <<i <<endl;
    increment(i);
    cout << "i = " <<i <<endl;

    return 0;
}

Output:
i = 0xffc189d8
i = 0xffc189dc
因此increment()改变的是i的地址,而不是它指向的存储单元

11.3.2 拷贝构造函数

如果设计了拷贝构造函数,当从现有的对象创建新对象时,编译器将不使用位拷贝,而总是调用我们的拷贝构造函数。

猜你喜欢

转载自blog.csdn.net/peopleqinlei/article/details/52894553