1)对象数组
class A{
public:
int x;
}
A a[10];
A *p=new A[10];
2)对象成员
一个类的成员对象为一个类对象,
当创建一个该类的对象时,先创建该类中的对象成员,再创建类对象;
当销毁一个对象时,顺序正好相反
3)深拷贝和浅拷贝
浅拷贝:简单的进行数据拷贝,当类中存在指针成员变量时,当使用浅拷贝时,会使得指针指向同一块内存,会存在释放错误,导致程序崩溃
深拷贝:在堆中申请一块内存,进行拷贝
4)对象指针
在堆中定义一个类对象时,返回一个类对象的指针,该指针指向的位置为类的第一个变量存放的地址
5)对象成员指针
指向对象的一个指针作为另一个类对象的成员;在构造函数中,在堆中申请内存,在析构函数中进行释放
class A{};
class B{
B(){
a=new A();
}
~B(){
delete a;
}
A *a;
};
6)常对象成员和常成员函数
常对象成员通过构造函数初始化列表进行初始化;
常成员函数不能修改成员对象的值(why:因为对象调用成员函数是通过this指针隐式调用,加上const,表明无法修改)
const 可以作为重载依据;
7)常指针和常引用
class A{};
A a;
const A &b=a;
const A *p=&a;
只能调用常成员函数;