C++ Primer Plus学习笔记

C++的表达式求值顺序并没有定义,比如 i=1, r= (i++)+ i*2  ,i++先运算还是i*2先运算是不确定的,取决于编译器,即r的结果可能为5(i++先运算的情况下),也可能为3(i*2先运算)。

 

++i相当于

 

int ppi(int & i)

{

    i = i + 1;

    return i;

}

 

 

 

i++相当于

 

int ipp(int & i)

{   

    int t = i;

    i = i + 1;

    return t;

}

i=1;

 

i++ + ++i的值为 4

 

一、 const及引用(&声明的引用称为左值引用, &&声明的引用称为右值引用)

 

 

    char One = 'A';
    char Two = 'B';
    const char Three = 'C';


    char * const P_One = &One;   //P_One is a const pointer to char, 即是P_One不能指向其它值了;
    P_One = NULL;                //这里会报错,因为P_One是const值;
    const char * P_Two = &Three; //P_Two is a pointer to const char, 即是P_Two是指向const变量的指针,当然P_Two也可以指向非const变量;
    P_Two = NULL;                //这里不会有问题,因为P_Two并不是const值
    char * P_Three = &Three;     //这里会报错,因为非const指针不能指向const变量;

 

 

 

(1)有函数void Test(int &a, int&b);

     调用Test时,传递参数必须为Int型,且不能为表达式。如下:

           int   x = 100,  y =200;  Test(x,  y); //正确

           int   &xx = x ,  &yy = y ; Test(xx, yy); //正确

                                     Test (x + 1,y);//错误

           long  x  =1.0   y = 2.0 ;Test (x,  y); //  错误

 (2)有函数 void Test(const int &a);

       调用Test时,若传递的实参不是int型(即实参与引用参数不匹配), 则自动生成临时变量;

 

            int  x =100;   Test (x + 1); //生成临时变量 ,Test函数中的操作不影响  x  的值, 类似于值传递;

           long  x  =1.0  ;Test (x); //  同上

(3)有函数 int &Test(int & a);返回值为int型引用

        int  x   = 10;         

        int   y = Test(x);// 得到y的值为10, 但y 与x 不指向同一地址;

        int  &y  =  Test(x);//得到的y为x的引用。

       返回引用时不能返回指向Test函数内的临时变量内的引用,因为当Test函数运行完毕,临时变量就会释放;

(4)基类的引用可以直接指向派生类的对象,无需强制转换;

(5)C++ 11中可以使用nullptr表示空指针

 (6)引用只能在定义时进行初始化;

   (7)当函数参数为普通引用时,不能传递一个表达式作为函数参数。因为引用是变量的别名,而表达式并不是一个变量;

             若函数参数是const引用,可以传递一个表达式作为函数参数,此时会创建一个临时变量储存该表达式的值,参数中的引用作为该临时变量的别名;

 

1、多态性 
  指相同对象收到不同消息或不同对象收到相同消息时产生不同的实现动作。C++支持两种多态性:编译时多态性,运行时多态性。 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值