对象成员指针示例:
#include <iostream>
#include <stdlib.h>
#include "Line.h"
using namespace std;
/*
对象成员指针:
要求:
定义两个类:
坐标类:Coordinate
数据成员:横坐标m_iX和纵坐标m_iY
成员函数:构造函数、析构函数、数据封装函数
线段类:Line
数据成员:点A指针m_pCoorA和点B指针m_pCoorB
成员函数:构造函数、析构函数、信息打印函数
*/
class Coordinate {
public:
Coordinate(int x, int y);
~Coordinate();
int getX();
int getY();
private:
int m_iX;
int m_iY;
};
Coordinate::Coordinate(int x, int y)
{
m_iX = x;
m_iY = y;
cout << "Coordinate()" << m_iX << "," << m_iY << endl;
}
Coordinate::~Coordinate()
{
cout << "Coordinate()" << m_iX << "," << m_iY << endl;
}
int Coordinate::getX()
{
return m_iX;
}
int Coordinate::getY()
{
return m_iY;
}
class Line {
public:
Line(int x1, int y1, int x2, int y2);
~Line();
void printInfo();
private:
Coordinate *m_pCoorA;
Coordinate *m_pCoorB;
};
Line::Line(int x1, int y1, int x2, int y2)
{
m_pCoorA = new Coordinate(x1, y1);
m_pCoorB = new Coordinate(x2, y2);
cout << "Line()" << endl;
}
Line::~Line()
{
delete m_pCoorA;
m_pCoorA = NULL;
delete m_pCoorB;
m_pCoorB = NULL;
cout << "~Line()" << endl;
}
void Line::printInfo()
{
cout << "printInfo()" << endl;
cout << "(" << m_pCoorA->getX() << "," << m_pCoorA->getY() << ")" << endl;
cout << "(" << m_pCoorB->getX() << "," << m_pCoorB->getY() << ")" << endl;
}
int main(void)
{
Line *p = new Line(1, 2, 3, 4);
p->printInfo();
delete p;
p = NULL;
cout << sizeof(p) << endl;
cout << sizeof(Line) << endl;
system("pause");
return 0;
}
打印结果: