对象数组:
建立对象数组的时候,如果有五十个元素就会调用五十个元素
在需要的时候可以在定义数组的时候进行初始化
当 :
构造函数只有一个参数的时候
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个对象数据成员
注意:
不同的对象都是调用同一个函数的目标代码
因此我们需要知道在每一个成员函数中都有一个特殊的指针
这个指针指引我们走向一个正确的存储地址,处理相应的对象的数据