- 1、本文档共14页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
我的C学习笔记我C学习笔记
结构体struct 和类class可以互换,本质结构体是一种特殊的类,struct默认是public 而class默认是private
Cons int a; 常量是要进行初始的。:a(1);
引用必须在定义的时候初始化。
全局变量或者全局对象,在进入main函数之前就已经分配好了内存空间
当基类的构造函数是为缺省的值时,在派生子类实例化时基类构造可以不带参数。
::Showwindow() 这样的前面加两个冒号,表示调用的是全局函数,即平台sdk的函数。
用const结尾的成员函数只能调用其他const结尾的成员函数。因为其他函数并不能保证同样不修改类的成员变量? 成员函数后加const,表示:类作者提示你,这个函数不会导致对象状态改变 ? ? 可以理解为"表示这个函数不会修改任何成员变量" ? ? 但不可绝对化。其实,还是可以修改由mutable关键字修饰的成员变量的。C++中, 构造函数和析构函数可以被显示调用. 显示调用默认构造函数的语法: a.A::A();(不能写成a.A();) , 显示调用非默认构造函数的语法: a.A::A(7);(不能写成a.A(7);); 显示调用析构函数的语法: a.A::~A();(可以写成a.~A();) .?显示调用构造函数和析构函数就像调用一般的函数一样, 并不意味着创建或销毁对象;?如果构造函数中动态分配了空间, 则显示调用构造函数会造成内存泄露. 创建对象时的隐式构造函数调用已经为对象分配了动态内存. 当用创建好的对象显示调用构造函数时, 对象指向的动态内存更新显示调用时所分配的, 对象生命周期结束时析构函数所释放掉的是后一次分配的动态内存, 也就是说创建对象时隐式构造函数调用所分配的那块内存泄漏了.?如果析构函数中释放动态分配的空间, 则会造成多次释放同一内存, 会出现严重错误.析构函数和内存释放,有一篇的总结,因为内容长,以后贴上来先看个简易的class A{public:??? A(int i = 3){a = i;};??? ~A(){cout << "destructor" << endl;}??? int value(){return a;}private:??? int a;};int main(){??? A a;??? A *p = new(&a) A(10);??? cout << a.value() << endl;??? delete p;??? return 0;}在a对象的地址上未析构a的时候,创建了新的无名堆对象,这样a的数据被覆盖了,但是编译器并未收到析构函数调用的消息,所以它认为那块内存存放的仍然是a对象的数据,所以a.value()仍可以取回值,取回当时内存中那个地址处的值,这是已经是10了。然后delete p的时候,执行两步工作,1。无名对象的析构函数调用,告诉编译器,那块内存中的值不能解释成无名对象的数据了,对于无名对象而言,已经无效了(但对于a对象而言,因为编译器并未收到a对象析构函数的调用,所以认为那块内存中的数据对于a而言仍是有效的,是a的数据的)2。问题发生在这个时候,delete p的第二个动作,归还内存给系统,标识为空闲内存(没有任何对象引用到的,没有任何函数占用的内存),而事实上,这是对于p所指对象而言,对于a对象,它仍引用到这块内存,这样产生了异常,系统认为是快空闲内存了,但确有个对象引用到了这块内存,行为属未定义。????? 这就好像两个指针指向同一块的内存,一个把内存释放了,另一个指针成了悬垂指针,对悬垂指针解引用取出的值无意义,随机的,看当时内存中的数据简单的说,??? 构造函数就是通知编译器,这块内存的数据解释成一个对象,哪块是哪个数据成员的数据,这些信息是构造函数给编译器的,都是隐式给的;显式的动作可以放在构造函数中(并未必需的)的,是初始化(不给初始化值可以的,随机值),获取资源??? 析构函数就是通知编译器,这块内存中的数据以后无需维护了,可以让其它使用了,里面的数据再不能解释成类对象的数据了,析构函数调用之后可以两种选择??? 1。一般情况,归还内存,栈的,堆的,都是??? 2。保留内存,只析构对象,这常见于placement new,delete往往同时执行了两个动作,所以这是候并不能直接delete,而是显式调用析构函数(详细论述待以后的总结)/todototry/article/details/1477210
int *pia = new int[10];我们并不能给动态分配的数组每个元素一个初始化值,语法并不支持基于这个原因,对于对象数组如果并没有默认构造函数,不能创建动态对象数组,因为new对象数组的时候,自动
您可能关注的文档
- 心脏病突发,掌握自救识最重要心脏病突发,掌握自救知识最重要.doc
- 微型计算机原理与接口术_课后习题答案微型计算机原理与接口技术_课后习题答案.ppt
- 心理咨询考试规程及答技巧题技巧.ppt
- 必修1专题六现代中国政治建设与祖国的统一复习提纲必修1专题六现代中国的政治建设与祖国的统一复习提纲.doc
- 必修1《上网浏览》pt课件1 高中信息技术必修1《上网浏览》ppt课件1 高中信息技术.ppt
- 心跳呼吸骤停抢救流程.doc
- 必修1知识点汇编必修知识点汇编.doc
- 必修2 遗传与进化必2 遗传与进化.doc
- 必修3-4文学常识、理探究必修3-4文学常识、梳理探究.doc
- 必修2第1章_第3节元素周期表的应用导学案100必修2第1章_第3节_元素周期表的应用导学案100.doc
- 2024年山东德州夏津县融媒体中心招聘4人历年高频考题难、易错点模拟试题(共500题)附带答案详解.docx
- 2024年山东济南历城区卫生健康局所属事业单位招聘50人历年高频考题难、易错点模拟试题(共500题)附带答案详解.docx
- 2024江苏徐州锡沂高新技术产业开发区招聘50人历年高频难、易点(行政职业能力测验共200题含答案解.docx
- 2024年山东德州职业技术学院招聘49人历年高频考题难、易错点模拟试题(共500题)附带答案详解.docx
- 2024年山东德州高级师范学校招聘工作人员12人高频考题难、易错点模拟试题(共500题)附带答案详解.docx
- 2023年12月恩施巴东县“才聚荆楚·智汇恩施”第二次专项事业单位工作人员7名笔试近6年高频考题难、易错点荟萃答案带详解附后.docx
- 2023年12月广东广州市黄埔区机关事务管理局招考聘用政府雇员笔试近6年高频考题难、易错点荟萃答案带详解附后.docx
- 2023年12月广西马山县纪委监委机关面向社会公开招考基层廉洁监督员及防贫监测员笔试近6年高频考题难、易错点荟萃答案带详解附后.docx
- 2023年12月广东广州市增城区招考聘用教师(上海设点)92人笔试近6年高频考题难、易错点荟萃答案带详解附后.docx
- 2023年12月广东省茂名市电白区赴高校现场公开招聘62名教师314笔试近6年高频考题难、易错点荟萃答案带详解附后.docx
文档评论(0)