zoukankan      html  css  js  c++  java
  • Pointers to classes (From the note of my firend)

    

    Pointers to classes

    Objects can also be pointed to by pointers: Once declared, a class becomes a valid type, so it can be used as the type pointed to by a pointer. For example:

     
    Rectangle * prect;
     


    is a pointer to an object of class Rectangle.

    Similarly as with plain data structures, the members of an object can be accessed directly from a pointer by using the arrow operator (->). Here is an example with some possible combinations:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    
    // pointer to classes example
    #include <iostream>
    using namespace std;
    
    class Rectangle {
      int width, height;
    public:
      Rectangle(int x, int y) : width(x), height(y) {}
      int area(void) { return width * height; }
    };
    
    
    int main() {
      Rectangle obj (3, 4);
      Rectangle * foo, * bar, * baz;
      foo = &obj;
      bar = new Rectangle (5, 6);
      baz = new Rectangle[2] { {2,5}, {3,6} };
      cout << "obj's area: " << obj.area() << '
    ';
      cout << "*foo's area: " << foo->area() << '
    ';
      cout << "*bar's area: " << bar->area() << '
    ';
      cout << "baz[0]'s area:" << baz[0].area() << '
    ';
      cout << "baz[1]'s area:" << baz[1].area() << '
    ';       
      delete bar;
      delete[] baz;
      return 0;
    }	


    This example makes use of several operators to operate on objects and pointers (operators *, &, ., ->, []). They can be interpreted as:

    expression can be read as
    *x pointed to by x
    &x address of x
    x.y member y of object x
    x->y member y of object pointed to by x
    (*x).y member y of object pointed to by x (equivalent to the previous one)
    x[0] first object pointed to by x
    x[1] second object pointed to by x
    x[n] (n+1)th object pointed to by x

    Most of these expressions have been introduced in earlier chapters. Most notably, the chapter about arrays introduced the offset operator ([]) and the chapter about plain data structures introduced the arrow operator (->).

    版权声明:本文博客原创文章,博客,未经同意,不得转载。

  • 相关阅读:
    Iaas、Paas、Saas对比分析
    一个不一样的Python教程
    传销的那些年
    availableProcessors is already set to [8], rejecting [8]
    脚本是个好东西
    《设计模式之禅》之桥梁模式
    博文视点之传奇程序员修炼之道观后感
    《设计模式之禅》之享元模式
    《设计模式之禅》之解释器模式
    Git修改commit提交信息
  • 原文地址:https://www.cnblogs.com/mengfanrong/p/4732245.html
Copyright © 2011-2022 走看看