4.29C++

侯捷部分

new 用来开辟对象的时候,编译器会将这个步骤分成三步,第一是分配内存,第二部是转换类型,第三步是构造函数,动态分配存入初始值。先分配空间,在分配初始值。delete和new相反的,但只有两部步,第一步析构函数,将 值删除,第二部,删除指针本体。

这边有一篇不错的文章,讲的是new和malloc的面试考点

https://blog.csdn.net/nie19940803/article/details/76358673?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522165119913016782391892902%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=165119913016782391892902&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~top_positive~default-1-76358673.142^v9^pc_search_result_control_group,157^v4^control&utm_term=new%E5%92%8Cmalloc%E7%9A%84%E5%8C%BA%E5%88%AB&spm=1018.2226.3001.4187https://blog.csdn.net/nie19940803/article/details/76358673?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522165119913016782391892902%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=165119913016782391892902&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~top_positive~default-1-76358673.142%5Ev9%5Epc_search_result_control_group,157%5Ev4%5Econtrol&utm_term=new%E5%92%8Cmalloc%E7%9A%84%E5%8C%BA%E5%88%AB&spm=1018.2226.3001.4187编译器会自动分配内存块,但是这个内存块也是分成几个部分的,红色叫cookie,绿色是用来填充的

array new 一定要搭配 array delete,如果array new 并没有搭配arraydelete会照成内存泄漏,原因是编译器默认析构函数只进行了一次,但动态分配的空间可能有多个,本体倒不会出错。

static修饰函数,函数没有this指针

偏特化分为范围上的偏还有个数上面的偏。个数上的偏可以是这样的,原本是有两个模板参数,现在其中的一个模板参数已经被固定,只剩下一个可以使用。而范围上的偏移则可以理解成和个数偏移差不多的,固定这个模板只接收了这个类型

4.29C++_第1张图片

 

 

4.29C++_第2张图片

 接下来讲到一个转换函数,转换函数不能有返回值,需要转换成什么类型,在第二个箭头处就写什么类型,后面最后面还要加个const,函数体内部再加上转换的方法

4.29C++_第3张图片

 

你可能感兴趣的:(侯捷,c++,开发语言)