zoukankan      html  css  js  c++  java
  • 前置++ 后置++

    【1】后置++(基本内置类型)

    #include <iostream>
    using namespace std;
    
    int main()
    {
        cout << "Hello World" << endl;
        int a = 3;
        int b = 0;
        int c = 3;
        a = a++;
        a = a++;
        b = c++;
        cout << "a : " << a << endl;
        cout << "b : " << b << endl;
        cout << "c : " << c << endl;
        return 0;
    }
    
    // out
    /*
    Hello World
    a : 3
    b : 3
    c : 4
    */

    【2】自定义类型

    示例代码如下:

     1 #include <iostream>
     2 using namespace std;
     3 
     4 class Age  
     5 {  
     6 public :
     7     Age(int v = 18) : m_i(v)
     8     {}
     9     
    10     Age& operator++() //前置++  
    11     {  
    12         ++m_i; // 自增1
    13         return *this;
    14     }  
    15   
    16     const Age operator++(int) // 后置++  
    17     {  
    18         Age temp = *this; // 临时对象
    19         ++(*this);        // 调用前置++  
    20         return temp;      // 返回临时对象
    21     }  
    22   
    23     Age& operator=(int i) // 赋值操作  
    24     {  
    25         this->m_i = i;  
    26         return *this;  
    27     }  
    28     
    29     int value() const 
    30     {
    31         return m_i;
    32     }
    33     
    34 private :  
    35     int m_i;  
    36 };  
    37 
    38 int main()
    39 {
    40     Age a;  
    41     a = a++;
    42     cout << "a1 : " << a.value() << endl;
    43     
    44     Age b;
    45     b = a++;
    46     cout << "a2 : " << a.value() << endl;
    47     cout << "b1 : " << b.value() << endl;
    48     
    49     //(a++)++;   // 编译错误  
    50     //++(a++);   // 编译错误  
    51     //a++ = 1;   // 编译错误  
    52     (++a)++;   // OK
    53     cout << "a3 : " << a.value() << endl;
    54     ++(++a);   // OK
    55     cout << "a4 : " << a.value() << endl;
    56     ++a = 1;   // OK  
    57     cout << "a5 : " << a.value() << endl;
    58     return 0;
    59 }
    60 
    61 // run out:
    62 a1 : 18
    63 a2 : 19
    64 b1 : 18
    65 a3 : 21
    66 a4 : 23
    67 a5 : 1

    分析总结:

    (1)两种类型(内置类型、自定义类型)前置++和后置++的表现是一致的。

    (2)前置++:自增1,返回对象本身。

    (3)后置++:直接加1,但是,返回的是加1前的对象(临时对象)。

    综上所述,a = a++; 这一句的执行结果:a的值没有改变。

    Good Good Study, Day Day Up.

    顺序 选择 循环 总结

  • 相关阅读:
    第16课 更新和删除数据
    第15课 插入数据
    第14课 组合查询
    第13课 创建高级联结
    第12课 联结表
    第11课 使用子查询
    第10课 分组数据
    第9课 汇总数据
    Python办公自动化 | EXCEL读取和写入
    test
  • 原文地址:https://www.cnblogs.com/Braveliu/p/10810985.html
Copyright © 2011-2022 走看看