引用1

来源:互联网 发布:java 生成6位随机数 编辑:程序博客网 时间:2024/04/29 23:26
//本章的主题包括 引用、文本(const)、文本表达式(constexpr)、静态(static)、外部(extern)、类型定义(typedef)、类型别名(aliases)、类型转换、作用于解析、统一初始化、可选函数语法、空指针文本、尖括号(angle bracket)、初始化列表、显示转换运算符、特性(attribute)、用户自定义文本、头文件、可变长度参数列表以及预处理器宏。/** 常识:C++ 中,引用是变量的别名。  int x = 3; int &xRef = x;  //引用变量在创建的时候必须初始化  */int main(){        //常识:引用变量在创建的时候必须初始化        int x = 3;    int &xRef = x;  //引用变量在创建的时候必须初始化        xRef = 10;      //通过xRef将x的值设置为10            //特殊:引用数据成员        /**          无法在类外面声明一个引用而不初始化      int & emptyRef;          对于包含类而言需要在构造函数初始化器中初始化引用数据成员,          引用数据成员         class MyClass{         public:           MyClass(int& ref):mRef(ref){}        protected:           int& mRef;     };   *///     int& unamedRed1 = 5;   //不能编译 ,改变文本5 是没有意义的,下面则可以    const int& unnamedRef2 = 5;        //常识:在初始化引用之后无法改变引用所指的变量,而只能改变变量的值        int x1 = 3,y1 = 4;    int& xRef1 = x1;    xRef1 = y1;     //xRef = &y;这样是不能编译的,因为&y是y的地址是一个指针,但是xRef是一个int的引用,只是x的别名,不是指针的引用。            int x2 = 3,z2 = 5;    int xRef2 = x2;    int zRef2 = z2;    zRef2 = xRef2;  //zRef2的值改为3 而已,没有改变引用。        //常识:你就把引用当做别名,以下都好理解了,//重点:这其实就是指针的引用,表示这是指针的别名,先*再&        int* intp;    int*& ptrRef = intp;   //这其实就是指针的引用,表示这是指针的别名,先*再&    ptrRef = new int;    *ptrRef = 5;            int x3 = 3;    int& xRef3 = x3;    int* xPtr3 = &xRef3;   //&xRef3 这就是取变量 x3 的地址,然后自然要赋给指针变量了。    *xPtr3 = 100;        int x4 = 3;    int& xRef4 = x4;//    int&& xDoubleRef = xRef4;  //引用的引用是不行的,c++11 意味这是右值引用。//    int&* refPtr = &xRef4;     //指向引用的指针,也是不行的            return 0;}

0 0
原创粉丝点击