zoukankan      html  css  js  c++  java
  • 理解C++类 this 指针的例子

    网上看了很多说明,还是处于半知半解的状态,看了下面这个例子才算是明白了this指针

    #include <iostream>
     
    using namespace std;
    
    class Box {
       public:
          // Constructor definition
          Box(double l = 2.0, double b = 2.0, double h = 2.0) {
             cout <<"Constructor called." << endl;
             length = l;
             breadth = b;
             height = h;
          }
          double Volume() {
             return length * breadth * height;
          }
          int compare(Box box) {
             return this->Volume() > box.Volume();
          }
          
       private:
          double length;     // Length of a box
          double breadth;    // Breadth of a box
          double height;     // Height of a box
    };
    
    int main(void) {
       Box Box1(3.3, 1.2, 1.5);    // Declare box1
       Box Box2(8.5, 6.0, 2.0);    // Declare box2
    
       if(Box1.compare(Box2)) {
          cout << "Box2 is smaller than Box1" <<endl;
       } else {
          cout << "Box2 is equal to or larger than Box1" <<endl;
       }
       
       return 0;
    }
    
    Constructor called.
    Constructor called.
    Box2 is equal to or larger than Box1
    [Finished in 1.9s]
    

    说明:
    表达式Box1.compare(Box2)Box1调用了compare函数,compare函数中的this指针此时指向的是Box1,因此compare函数中的表达式return this->Volume() > box.Volume()变成了return Box1->Volume() > box.Volume()

    以上例子也可以写成指针的形式,如下

    #include <iostream>
     
    using namespace std;
    
    class Box {
       public:
          // Constructor definition
          Box(double l = 2.0, double b = 2.0, double h = 2.0) {
             cout <<"Constructor called." << endl;
             length = l;
             breadth = b;
             height = h;
          }
          double Volume() {
             return length * breadth * height;
          }
          int compare(Box box) {
             return this->Volume() > box.Volume();
          }
          
       private:
          double length;     // Length of a box
          double breadth;    // Breadth of a box
          double height;     // Height of a box
    };
    
    int main(void) {
       Box *b1 = new Box(3.3, 1.2, 1.5);    // Declare b1
       Box *b2 = new Box(8.5, 6.0, 2.0);    // Declare b2
    
       if(b1 ->compare(*b2)) {
          cout << "b2 is smaller than b1" <<endl;
       } else {
          cout << "b2 is equal to or larger than b1" <<endl;
       }
       
       return 0;
    }
    
  • 相关阅读:
    python json 访问与字符串截取
    python 12306 车次数据获取
    12306 城市代码 切片技巧
    python 9*9 乘法表
    python 列表转为字典的两个小方法
    python 三种遍历列表里面序号和值的方法
    虚拟机中访问连接在物理机上的摄像机(使用桥接)
    C++程序调用python3
    Notepad++编写运行python程序
    查看进程被哪台电脑的哪个进程连接(netstat)
  • 原文地址:https://www.cnblogs.com/yaos/p/12099213.html
Copyright © 2011-2022 走看看