对象数组与指针+this指针

来源:互联网 发布:淘宝代理买吃的要证吗 编辑:程序博客网 时间:2024/05/22 15:29

对象数组:

建立对象数组的时候,如果有五十个元素就会调用五十个元素

在需要的时候可以在定义数组的时候进行初始化


当      :

构造函数只有一个参数的时候

student  stu[3]={30,70,21};

多个参数的时候(注意逗号和分号)

student stu[3]={    student(110,25,15),    student(22,5,4),    student(45,65,7)};


综合例子

#include<iostream>using namespace std;class box{private:    int height,width,lenth;public:    box(int a=10,int b=10,int c=10):height(a),width(b),lenth(c){}    int volume();};int box::volume(){    return height*width*lenth;}int main(){    box a[3]={        box(12,5,14),        box(55,54,4),        box(7,9,1)    };    cout<<"volume of a[0] is "<<a[0].volume()<<endl;    cout<<"volume of a[1] is "<<a[1].volume()<<endl;    cout<<"volume of a[2] is "<<a[2].volume()<<endl;    return 0;}



对象指针:

对于指向对象成员就不多讲了,和c 的结构体类似

对于不常用的指向对象成员函数的指针稍微注意一下:


普通的函数指正变量定义方法:  

 类型名 (* 指针变量名)(参数列表)

例如:

void (*p)();

定义指向成员函数的指针变量:

指针变量名(类名::*指针变量名)(参数列表)

void (student::*p)();
这里的括号一定不能省略,因为括号的优先级比 * 要高

如果没有的话相当于:

void (student::*(p2()));

这里表示返回值位void型的指针函数


定义之后当然是需要使用指向一个共有成员函数

指针变量名=&类名::成员函数名;

例如:(综合的例子)

void (student::*p3)()=&student::display;
没有括号;


this指针
每一个对象数据成员都分别独自占有存储空间,方便存储每一个对象的成员数据的值,如果同时定义n个对象,就有n组同样大小的空间以存放n个对象数据成员

注意:

           不同的对象都是调用同一个函数的目标代码


因此我们需要知道在每一个成员函数中都有一个特殊的指针

     这个指针指引我们走向一个正确的存储地址,处理相应的对象的数据






0 0