2012年10月30日 星期二

[cpp] running sequence

[cpp] running sequence
#include <iostream>
using namespace std;

class PointDemo {
public:
    PointDemo(int);
    ~PointDemo();
 
    void show();
private:
    // Nested Class
    class Point {
    public:
        Point();
        Point(int, int);
        int x() { return _x; }
        int y() { return _y; }
        void x(int x) { _x = x; }
        void y(int y) { _y = y; }
    private:
        int _x;
        int _y;
    };
 
    Point **_points;
    int _length;
};

// 實作內部類別
PointDemo::Point::Point() {
    _x = 0;
    _y = 0;
    cout << "enter point initial 00" << endl;
}

// 實作內部類別
PointDemo::Point::Point(int x, int y) {
    _x = x;
    _y = y;
    cout << "enter point set xy" << endl;
}

PointDemo::PointDemo(int length) : _length(length) {
    cout << "enter points demo1" << endl;
    _points = new Point*[_length];
    cout << "enter points demo2" << endl;
    for(int i = 0; i < _length; i++) { 
        cout << "enter points demo3" << endl;
        _points[i] = new Point(); 
        _points[i]->x(i*5);
        _points[i]->y(i*5);
    } 
}

void PointDemo::show() {
    for(int i = 0; i < _length; i++) { 
    cout << "enter point show" << endl;
    cout << "(x, y) = (" 
         << _points[i]->x() << ", "
         << _points[i]->y() << ")"
         << endl;
    } 
}

PointDemo::~PointDemo() {
    for(int i = 0; i < _length; i++) {
        cout << "enter ponit delete" << i << endl;
        delete _points[i];
    } 
    delete [] _points;
}

int main() {
    cout << "+++++++++++++++++++++++++" << endl;
    PointDemo demo(10);
    cout << "-------------------------" << endl;
    demo.show();
    cout << "#########################" << endl;
    return 0;
}


Output:
+++++++++++++++++++++++++
enter points demo1
enter points demo2
enter points demo3
enter point initial 00
enter points demo3
enter point initial 00
enter points demo3
enter point initial 00
enter points demo3
enter point initial 00
enter points demo3
enter point initial 00
enter points demo3
enter point initial 00
enter points demo3
enter point initial 00
enter points demo3
enter point initial 00
enter points demo3
enter point initial 00
enter points demo3
enter point initial 00
-------------------------
enter point show
(x, y) = (0, 0)
enter point show
(x, y) = (5, 5)
enter point show
(x, y) = (10, 10)
enter point show
(x, y) = (15, 15)
enter point show
(x, y) = (20, 20)
enter point show
(x, y) = (25, 25)
enter point show
(x, y) = (30, 30)
enter point show
(x, y) = (35, 35)
enter point show
(x, y) = (40, 40)
enter point show
(x, y) = (45, 45)
#########################
enter ponit delete0
enter ponit delete1
enter ponit delete2
enter ponit delete3
enter ponit delete4
enter ponit delete5
enter ponit delete6
enter ponit delete7
enter ponit delete8
enter ponit delete9


Ref :
http://caterpillar.onlyfun.net/Gossip/CppGossip/NestedClasses.html

沒有留言:

張貼留言