随笔分类 -  C++重点

上一页 1 2 3 4 5 6 7 ··· 10 下一页
摘要:# 10.智能指针出现循环引用怎么解决? 弱指针用于专门解决shared_ptr循环引用的问题,weak_ptr不会修改引用计数,即其存在与否并不影响对象的引用计数器。循环引用就是:两个对象互相使用一个shared_ptr成员变量指向对方。弱引用并不对对象的内存进行管理,在功能上类似于普通指针,然而 阅读全文
posted @ 2023-08-02 22:16 CodeMagicianT 阅读(77) 评论(0) 推荐(0)
摘要:# 9.手写实现智能指针类需要实现哪些函数? ==1.智能指针是一个数据类型,一般用模板实现,模拟指针行为的同时还提供自动垃圾回收机制。它会自动记录SmartPointer对象的引用计数,一旦T类型对象的引用计数为0,就释放该对象。== 除了指针对象外,我们还需要一个引用计数的指针设定对象的值,并将 阅读全文
posted @ 2023-08-02 22:15 CodeMagicianT 阅读(258) 评论(0) 推荐(0)
摘要:# 8.智能指针的循环引用 循环引用是指使用多个智能指针share_ptr时,出现了指针之间相互指向,从而形成环的情况,有点类似于死锁的情况,这种情况下,智能指针往往不能正常调用对象的析构函数,从而造成内存泄漏。举个例子: ```C++ #include using namespace std; t 阅读全文
posted @ 2023-08-02 22:15 CodeMagicianT 阅读(223) 评论(0) 推荐(0)
摘要:# 7.说说你了解的auto_ptr作用 1.auto_ptr的出现,主要是为了解决“有异常抛出时发生内存泄漏”的问题;抛出异常,将导致指针p所指向的空间得不到释放而导致内存泄漏; 2.auto_ptr构造时取得某个对象的控制权,在析构时释放该对象。我们实际上是创建一个auto_ptr\类型的局部对 阅读全文
posted @ 2023-08-02 22:15 CodeMagicianT 阅读(48) 评论(0) 推荐(0)
摘要:# 6.智能指针的作用 1.C++11中引入了智能指针的概念,方便管理堆内存。使用普通指针,容易造成堆内存泄露(忘记释放),二次释放,程序发生异常时内存泄露等问题等,使用智能指针能更好的管理堆内存。 2.智能指针在C++11版本之后提供,包含在头文件\中,shared_ptr、unique_ptr、 阅读全文
posted @ 2023-08-02 22:14 CodeMagicianT 阅读(48) 评论(0) 推荐(0)
摘要:# 5.说一说你了解的关于lambda函数的全部知识 1.利用lambda表达式可以编写内嵌的匿名函数,用以替换独立函数或者函数对象; 2.每当你定义一个lambda表达式后,编译器会自动生成一个匿名类(这个类当然重载了()运算符),我们称为闭包类型(closure type)。那么在运行时,这个l 阅读全文
posted @ 2023-08-02 22:12 CodeMagicianT 阅读(227) 评论(0) 推荐(0)
摘要:# 4.智能指针的原理、常用的智能指针及实现 ## 1.auto_ptr 当你在读这篇文章的时候,应该都有这样一个疑问?那就是为什么要使用[智能指针](https://so.csdn.net/so/search?q=智能指针&spm=1001.2101.3001.7020)。 我们先看这样一个示例: 阅读全文
posted @ 2023-08-02 22:09 CodeMagicianT 阅读(362) 评论(0) 推荐(0)
摘要:# 3.C++中NULL和nullptr区别 ## 1.NULL是什么 在[《NULL,0,'\0',"0","\0"的区别》](http://mp.weixin.qq.com/s?__biz=MzI2OTA3NTk3Ng==&mid=2649284887&idx=1&sn=e97526b0e2cb 阅读全文
posted @ 2023-08-02 22:04 CodeMagicianT 阅读(95) 评论(0) 推荐(0)
摘要:# 2.auto、decltype和decltype(auto)的用法 ## 1.auto 编程时常常需要把表达式的值赋给变量,这就要求声明变量时清楚的知道表达式的类型。然而有些情况是声明的变量的类型我们并不知道,比如在模板编程时。为了解决这个问题,C++11引入了auto类型说明符,用它来让编译器 阅读全文
posted @ 2023-08-02 22:03 CodeMagicianT 阅读(452) 评论(0) 推荐(0)
摘要:# 1.C++ 11有哪些新特性? - long long类型 - 列表初始化 - nullptr常量(替代 NULL) - constexpr变量[[68.C++中的const - CodeMagicianT - 博客园 (cnblogs.com)](https://www.cnblogs.com 阅读全文
posted @ 2023-08-02 22:03 CodeMagicianT 阅读(51) 评论(0) 推荐(0)
摘要:# 15.类对象的大小受哪些因素影响? 1.类的非静态成员变量大小,静态成员不占据类的空间,成员函数也不占据类的空间大小; 2.内存对齐另外分配的空间大小,类内的数据也是需要进行内存对齐操作的; 3.虚函数的话,会在类对象插入vptr指针,加上指针大小; 4.当该类是某类的派生类,那么派生类继承的基 阅读全文
posted @ 2023-08-02 22:01 CodeMagicianT 阅读(115) 评论(0) 推荐(0)
摘要:# 14.this指针调用成员变量时,堆栈会发生什么变化? 当在类的非静态成员函数访问类的非静态成员时,编译器会自动将对象的地址传给作为隐含参数传递给函数,这个隐含参数就是this指针。 即使你并没有写this指针,编译器在链接时也会加上this的,对各成员的访问都是通过this的。 例如你建立了类 阅读全文
posted @ 2023-08-02 22:01 CodeMagicianT 阅读(69) 评论(0) 推荐(0)
摘要:# 13.请说一下以下几种情况下,下面几个类的大小各是多少? ```C++ class A {}; int main() { cout << sizeof(A) << endl;// 输出 1; A a; cout << sizeof(a) << endl;// 输出 1; return 0; } 阅读全文
posted @ 2023-08-02 22:00 CodeMagicianT 阅读(34) 评论(0) 推荐(0)
摘要:# 12.你知道空类的大小是多少吗? 1.C++空类的大小不为0,不同编译器设置不一样,vs设置为1 2.C++标准指出,不允许一个对象(当然包括类对象)的大小为0,不同的对象不能具有相同的地址 3.带有虚函数的C++类大小不为1,因为每一个对象会有一个vptr指向虚函数表,具体大小根据指针大小确定 阅读全文
posted @ 2023-08-02 21:59 CodeMagicianT 阅读(367) 评论(0) 推荐(1)
摘要:# 11.如果在类的析构函数中调用delete this,会发生什么? 会导致堆栈溢出。原因很简单,delete的本质是“为将被释放的内存调用一个或多个析构函数,然后,释放内存”。显然,delete this会去调用本对象的析构函数,而析构函数中又调用delete this,形成无限递归,造成堆栈溢 阅读全文
posted @ 2023-08-02 21:58 CodeMagicianT 阅读(93) 评论(0) 推荐(0)
摘要:# 10.为什么是不可预期的问题? delete this之后不是释放了类对象的内存空间了么,那么这段内存应该已经还给系统,不再属于这个进程。照这个逻辑来看,应该发生指针错误,无访问权限之类的令系统崩溃的问题才对啊?这个问题牵涉到操作系统的内存管理策略。delete this释放了类对象的内存空间, 阅读全文
posted @ 2023-08-02 21:58 CodeMagicianT 阅读(26) 评论(0) 推荐(0)
摘要:# 9.在成员函数中调用delete this会出现什么问题?对象还可以使用吗? 在类对象的内存空间中,只有数据成员和虚函数表指针,并不包含代码内容,类的成员函数单独放在代码段中。在调用成员函数时,隐含传递一个this指针,让成员函数知道当前是哪个对象在调用它。当调用delete this时,类对象 阅读全文
posted @ 2023-08-02 21:58 CodeMagicianT 阅读(64) 评论(0) 推荐(0)
摘要:# 8.内存泄漏的后果?如何监测?解决方法? ## 1.内存泄漏 ### 1.1定义 内存泄漏是指由于疏忽或错误造成了程序未能释放掉不再使用的内存的情况。内存泄漏并非指内存在物理上消失,而是应用程序分配某段内存后,由于设计错误,失去了对该段内存的控制; ### 1.2种类 #### 1.2.1C/C 阅读全文
posted @ 2023-08-02 21:57 CodeMagicianT 阅读(291) 评论(0) 推荐(0)
摘要:# 7.几个this指针的易混问题 见[6.类的*this指针有以下特点](https://www.cnblogs.com/codemagiciant/p/17601868.html) 阅读全文
posted @ 2023-08-02 21:54 CodeMagicianT 阅读(23) 评论(0) 推荐(0)
摘要:## 6.类的\*this指针有以下特点 #### 1.每个对象都有一个隐藏的this指针,但不属于对象,是编译器添加的 #### 2.this只能在成员函数中使用。全局函数、静态函数都不能使用this。 实际上,成员函数默认第一个参数为T \*const this。 如: ``` class A 阅读全文
posted @ 2023-08-02 21:52 CodeMagicianT 阅读(81) 评论(0) 推荐(0)

上一页 1 2 3 4 5 6 7 ··· 10 下一页