声明一个对象数组
- Point a[2];//类名 数组名[常量表达式];
- Point a[2]={Point(1,2),Point(3,4)};//对象数组初始化的过程,实际上就是调用构造函数对每一个对象进行初始化。
- Point a[2]={Point(1,2) };//如果没有指定数组元素的初始值,就会调用默认构造函数。
调用单个数组元素公有成员
a[0].show();//数组名[下标表达式].成员名
动态创建对象数组
Point *p=new Point;//动态创建对象,没有给出参数列表,调用默认构造函数
Point *p=new Point();//保留括号,但没有给出任何值,表示用0初始化对象
Point *p=new Point(p1);//动态分配了用于存p1的内存空间,并将初值2放入该空间
delete p;//删除对象,并自动调用析构函数
Point *p=new Point[10];//new 类型名 [数组长度],动态创建一维数组
p[0].move(5,10);//*p==p[0]
delete [] p;//删除整个对象数组
用vector创建数组对象(在调试状态下访问数组时检查下标越界错误,防止下标越界错误)
#include<vector>
vector<int> arr(10);//vector<元素类型>数组对象名(数组长度)。
vector<int>arr(10,2);/*vector定义的数组对象的所有元素都会被初始化:如果数组元素是基本类型,则以0初始化;
如果数组元素是类类型,则调用默认构造函数初始化,所以类必须有默认构造函数;也可以以上述指定初始值2,初
始化所有元素。*/
arr[0];//vector数组对象元素的访问,与普通数组相同
零碎知识点
const int *p=&a; //指向常量的指针,不能通过指针来改变所指对象的值,但指针本身可以改变。
int * const p=&a; //指针常量,指针本身的值不能改变。
void func(int p[])
void func(int p[3])
void func(int *p)//一维数组做参数,三者是等价的
int line1[]={1,0,0};
int line2[]={0,1,0};
int line3[]={0,0,1};
int *p[3]={line1,line2,line3};
for(int i=0;i<3;i++)
for(int j=0;j<3;j++)
cout<<p[i][j]<<endl;/*p[i][j]与*(p[i]+j)等价,先把指针数组p所存储的第i个指针读出,然后都出它所指向地址
后方的第j个数。*/
对象指针->成员名,(*对象指针).成员名,对象指针[].成员名是一致的
this指针作为一个隐含参数传递给非静态成员函数,用以指向该成员函数所属类所定义的对象。当不同的对象调用同一个类的成员函数代码时,编译器会依据该成员函数的this指针所指向的不同对象来确定应该引用哪个对象的数据成员。