对象指针
声明形式
例如:
1 2 3
| Clock c(8,3,10); Clock *ptr; ptr=&c;
|
通过指针访问对象成员
通过 ptr
来访问变量c中的内容,可以如下,与C语言一致
1
| ptr->getHour()相当于(*ptr).getHour();
|
对象指针( this 指针 )
1、 ==隐含== 于每一个类的成员函数中的特殊指针
2、 明确的指出成员函数当前所操作的数据所属的对象
例如:Clock 类的getHour 函数中 return Hour=return this Hour
通过类的对象调用public 中的函数的时候,自动的调用this 指针
动态创建对象
new 类型名字 T (初始化参数列表)
功能:在程序执行期间,申请用于存放T 类型的对象的内存空间,并且依次列表赋以初值
结果值:成功:得到T类型的指针,失败:抛出异常
delete 指针p
功能:释放指针p所指向的内存,p必须是new操作的返回值
调用delete 函数,自动调用析构函数
与C语言中malloc 和 free 一致
申请和释放对象数组
1 2 3 4
| Point *ptr =new Point[2]; ptr[0].move(5,10); ptr[1].move(15,20); delete[] ptr;
|
作业
答案
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 28 29 30 31 32 33 34 35 36 37 38 39 40 41
| #include<iostream> using namespace std;
class Rectangle { private: float width, height; public: Rectangle(); Rectangle(float width, float height); ~Rectangle(); void Setwidth(float width) { this ->width = width; } void Setheight(float height) { this->height = height; } float getArea(){ return height * width; } float getPerimeter() { return (height + width) * 2; } }; Rectangle::Rectangle() { this->width = 1.0; this->height = 1.0; } Rectangle::Rectangle(float width, float height) { this->width = width; this->height = height; } Rectangle::~Rectangle() { cout << "The function is over" << endl; } int main(void) { Rectangle rect[3] = { Rectangle(3,4),Rectangle(7,6),Rectangle(5,6) }; for (int i = 0; i < 3; i++) { cout << "第" << i + 1 << "位成员的周长为长为" << rect[i].getPerimeter() << "面积为:" << rect[i].getArea() << endl; } return 0; }
|
屏幕截图