美文网首页
C++引用和拷贝构造函数

C++引用和拷贝构造函数

作者: zjunchao | 来源:发表于2016-03-22 15:15 被阅读79次

  • 引用是支持运算符重载语法的基础,也为函数的传入和传出控制提供了便利。
  • 拷贝构造函数,是一种特殊的构造函数,需要用引用来实现从现有的相同类型的对象中产生新的对象。编译器使用拷贝构造函数头通过按值传递的方式在函数中传递和返回对象

C++ 中的指针

  • C和C++指针的最终要的区别在于C++是一种类型要求更强的语言。就像void *而言,这一点表现更加突出。C不允许随便地把一个类型的指针赋给另一个类型,单允许通过void*来实现.
  • C++ 中必须显示的进行类型转换。

C++中的引用

基本概念

  • 引用(&)就像能自动地被编译器间接引用的常量型指针。
  • 通常用户函数的参数表中和函数的返回值,但是也能独立的使用
  • 任何引用必须和储存单元联系,访问引用时就是访问那个储存单元
  • 当引用被创建时,它必须被初始化,(指针则可以在任何时候被初始化)
  • 一旦一个引用被初始化为指向一个对象,它就不能改变为另一个对象的引用(指针则可以在任何时候指向另一个对象)
  • 不可能有NULL的引用。必须确保引用是和一块合法的储存单元关联

函数中的引用

最经常看见引用的地方是在函数的参数和返回值当中

  • 当引用被作为函数的参数时,在函数内任何对引用的更改将对函数外的参数产生改变。(可以传递一个指针来做相同的事情,但是引用有更加清晰的语法)
  • 如果从函数中返回一个引用,必须像从函数中返回一个指针一样来对待。
  • 当函数返回时,无论引用关联的是什么都应该存在,否则不知道指向哪一个内存。(: 不能返回一个临时变量,以为临时变量在函数体结束时已经被销毁)
int& h() {
int q;
//!  return q;  // Error
static int x;
return x; // Safe, x lives outside this scope
} 

常量引用

1.函数的参数是一个常量引用,那么函数将不会改变参数。

指针引用

  1. C语言中如果想改变指针本身而不是它所指向的内容,函数的声明可能是这样 void f(int **);当传递它时必须取得指针的地址:
int i = 47;
int *ip = &i;
f(&ip);

int* p=0 是一种初始化结构,把指针赋值为空。

相关文章

  • C++ 拷贝控制(二) — 移动构造函数和移动赋值运算符

    相关文章: C++ 拷贝控制(一) — 析构函数、拷贝构造函数与拷贝赋值函数 C++ 引用类型 — 左值引用、常引...

  • C++中容易被忽略的基础知识

    const和define的区别C++中static关键字的总结C++中的构造函数及深拷贝浅拷贝c++基础之引用和指...

  • c++学习笔记2(GeekBand)

    拷贝构造、拷贝赋值和析构 c++中有Big Three三个特殊的函数,他们就是拷贝构造函数,拷贝赋值函数和析构函数...

  • C++引用和拷贝构造函数

    引用是支持运算符重载语法的基础,也为函数的传入和传出控制提供了便利。 拷贝构造函数,是一种特殊的构造函数,需要用引...

  • C++ 构造函数,类的成员变量

    c++ 05 构造函数无参构造函数有参构造函数 拷贝构造函数 浅拷贝 深拷贝 类的成员变量 四类特殊的成员变量

  • [C++之旅] 12 拷贝构造函数

    [C++之旅] 12 拷贝构造函数 拷贝构造函数的特点 如果没有自定义的拷贝构造函数则系统自动生成一个默认的拷贝构...

  • C++拷贝控制

    前言 C++通过在类中定义几个成员函数来控制的对象的拷贝,移动,赋值和销毁,分别如下: 拷贝构造函数和移动构造函数...

  • C++ 拷贝构造函数浅析

    什么是拷贝构造函数:拷贝构造函数,顾名思义,就是在拷贝的时候调用的构造函数。 几个原则:C++ primer p4...

  • C++拷贝构造函数——难点

    拷贝构造函数 - C++详细 | 编程字典

  • 无标题文章

    类string的构造函数、拷贝构造函数和析构函数 引用http://www.cppblog.com/life02/...

网友评论

      本文标题: C++引用和拷贝构造函数

      本文链接:https://www.haomeiwen.com/subject/xghllttx.html