上一页 1 ··· 30 31 32 33 34 35 36 37 38 ··· 40 下一页

2021年7月10日

摘要: 首先需要明白一件事情,临时变量,在函数调用过程中是被压到程序进程的栈中的,当函数退出时,临 时变量出栈,即临时变量已经被销毁,临时变量占用的内存空间没有被清空,但是可以被分配给其他变 量,所以有可能在函数退出时,该内存已经被修改了,对于临时变量来说已经是没有意义的值了 C语言里规定:16bit程序中 阅读全文
posted @ 2021-07-10 21:08 超人不会灰啊 阅读(452) 评论(0) 推荐(0) 编辑
 
摘要: #include <iostream>using namespace std;int f(int n){ cout << n << endl; return n;}void func(int param1, int param2){ int var1 = param1; int var2 = par 阅读全文
posted @ 2021-07-10 21:04 超人不会灰啊 阅读(607) 评论(0) 推荐(0) 编辑
 
摘要: 1) 对象生命周期结束,被销毁时; 2) delete指向对象的指针时,或delete指向对象的基类类型指针,而其基类虚构函数是虚函数时; 3) 对象i是对象o的成员,o的析构函数被调用时,对象i的析构函数也被调用。 阅读全文
posted @ 2021-07-10 20:28 超人不会灰啊 阅读(158) 评论(0) 推荐(0) 编辑
 
摘要: 原理 智能指针是一个类,用来存储指向动态分配对象的指针,负责自动释放动态分配的对象,防止堆内存泄漏。动态分配的资源,交给一个类对象去管理,当类对象声明周期结束时,自动调用析构函数释放资源 常用的智能指针 (1) shared_ptr 实现原理:采用引用计数器的方法,允许多个智能指针指向同一个对象,每 阅读全文
posted @ 2021-07-10 12:19 超人不会灰啊 阅读(337) 评论(0) 推荐(0) 编辑
 
摘要: (1)创建一个对象时需要确定对象的类型,而虚函数是在运行时动态确定其类型的。在构造一个对象时,由于对象还未创建成功,编译器无法知道对象的实际类型 (2)虚函数的调用需要虚函数表指针vptr,而该指针存放在对象的内存空间中,若构造函数声明为虚 函数,那么由于对象还未创建,还没有内存空间,更没有虚函数表 阅读全文
posted @ 2021-07-10 12:18 超人不会灰啊 阅读(207) 评论(0) 推荐(0) 编辑
 
摘要: 1) C++只会析构已经完成的对象,对象只有在其构造函数执行完毕才算是完全构造妥当。在构造函数中发生异常,控制权转出构造函数之外。 因此,在对象b的构造函数中发生异常,对象b的析构函数不会被调用。因此会造成内存泄漏。 2) 用auto_ptr对象来取代指针类成员,便对构造函数做了强化,免除了抛出异常 阅读全文
posted @ 2021-07-10 11:59 超人不会灰啊 阅读(163) 评论(0) 推荐(0) 编辑

2021年7月9日

摘要: 1) C++中基类采用virtual虚析构函数是为了防止内存泄漏。 2) 纯虚析构函数一定得定义,因为每一个派生类析构函数会被编译器加以扩张,以静态调用的方式调用其每一个虚基类以及上一层基类的析构函数。 阅读全文
posted @ 2021-07-09 19:26 超人不会灰啊 阅读(105) 评论(0) 推荐(0) 编辑
 
摘要: 1) 构造函数顺序 ① 基类构造函数。如果有多个基类,则构造函数的调用顺序是某类在类派生表中出现的顺序,而不是 它们在成员初始化表中的顺序。 ② 成员类对象构造函数。如果有多个成员类对象则构造函数的调用顺序是对象在类中被声明的顺序, 而不是它们出现在成员初始化表中的顺序。 ③ 派生类构造函数。 2) 阅读全文
posted @ 2021-07-09 19:20 超人不会灰啊 阅读(297) 评论(0) 推荐(0) 编辑
 
摘要: 1) 在C++中,提倡不在构造函数和析构函数中调用虚函数; 2) 构造函数和析构函数调用虚函数时都不使用动态联编,如果在构造函数或析构函数中调用虚函数,则 运行的是为构造函数或析构函数自身类型定义的版本; 3) 因为父类对象会在子类之前进行构造,此时子类部分的数据成员还未初始化,因此调用子类的虚函数 阅读全文
posted @ 2021-07-09 19:16 超人不会灰啊 阅读(271) 评论(0) 推荐(0) 编辑

2021年7月7日

摘要: 1、 从存储空间角度,虚函数相应一个指向vtable虚函数表的指针,这大家都知道,但是这个指向 vtable 的指针事实上是存储在对象的内存空间的。 问题出来了,假设构造函数是虚的,就须要通过 vtable来调用,但是对象还没有实例化,也就是内存空 间还没有,怎么找vtable呢?所以构造函数不能是 阅读全文
posted @ 2021-07-07 14:20 超人不会灰啊 阅读(306) 评论(0) 推荐(0) 编辑
上一页 1 ··· 30 31 32 33 34 35 36 37 38 ··· 40 下一页