-
浅拷贝:只是简单地把数值拷贝(不能重新为指针指向的变量重新开辟内存)
深拷贝:为指针指向的变量重新开辟内存,将内存里的值一个个拷贝
查看全部 -
对象指针的使用
查看全部 -
对象成员相当于在一个类(A)中实例化另一个类(B),当在主函数中实例化A类时,先按正常流程实例化B类对象成员,再将B对象成员当成普通数据成员进行实例化(这个过程是由内到外的),析构时顺序则相反(由外到内)
查看全部 -
堆中实例化数据成员“点”,栈中实例化对象“Line”;释放时先释放堆中的内存“点”,再释放栈中的内存“Line”;
查看全部 -
堆中实例化的数组需要手动销毁释放内存,在栈中实例化的数组,系统自动回收内存
查看全部 -
常对象才能调用常成员函数
查看全部 -
#定义指针数组Classname *p = new Classname[i];
#指针申请内存 ElemType *p; p = new ElemType[i];
查看全部 -
#深拷贝构造函数
#classname(const classname& Typename){值拷贝+内存拷贝}
#当进行对象拷贝时,不是简单地作值的拷贝,
而是将堆中内存的数据也进行拷贝
查看全部 -
当类对象有多个数据成员的时候,直接初始化 || 复制初始化就有问题了:
#初始化对象1是用普通构造函数,,初始化对象2是用拷贝构造函数,,
#在浅拷贝的时候,非指针型成员指向的是不同的内存地址,
指针型成员却是指向同样的内存地址
#对对象1操作必然导致对象2跟随改变;
#销毁对象1后,对对象2的销毁必然导致系统崩溃
#因此存在指针型数据成员的时候,就必须使用深拷贝构造函数
查看全部 -
当类对象只有一个数据成员的时候,直接初始化 || 复制初始化都是没问题的;
这种初始化方式:只是将数据成员的值进行简单的拷贝(浅拷贝)
查看全部 -
对象成员:实例化对象成员的时候,先创建原子对象,再创建子对象,最后创建对象成员;
销毁对象的时候就刚好反过来;
查看全部 -
Coordinate *p = new Coordinate[3] 每一个对象都调用了它的构造函数
delete []p 每一个对象都调用了它的析构函数
delete p 只有第一个对象调用了析构函数
查看全部 -
p是指针,在执行完for的最后一次操作之后,p指向了申请的内存的之前一个位置,也就是p[-1],如果不p++,归还的内存是从p[-1]开始的,是错误的
查看全部 -
指针就是存放地址的变量。是一个大小固定为4个byte的变量,不管是什么类型的指针大小都是固定的,因为存放是一个地址信息。
查看全部 -
对象数组的实例化方式及其调用
查看全部
举报