
C++
文章平均质量分 79
weixin_42111061
这个作者很懒,什么都没留下…
展开
-
C++内存模型、内存布局
https://www.cnblogs.com/yunlambert/p/9876491.html转载 2020-08-11 21:44:36 · 122 阅读 · 0 评论 -
C++智能指针(二)shared_ptr和weak_ptr
shared_ptr共享指针的最显著特点就是计数器。 shared_ptr<string> p0; cout << p0.use_count() << endl; shared_ptr<string> p1(new string("hello")); cout << p1.use_count() << endl; shared_ptr<string> p2 = p1; cout << p2.use_原创 2020-08-04 14:57:35 · 294 阅读 · 0 评论 -
C++面试用题(三)move语义、构造函数、深浅拷贝、右值引用
移动语义C++11的特性:move语义,一些对象构造的时候可以获取到已有的资源,而不需要通过拷贝来申请新的内存,这样移动而非拷贝将会大幅度提升性能。首先看一个简单的例子: string str = "fuck"; vector<string> v; v.push_back(str); cout << v[0] << endl; cout << str << endl; //这里使用move v.push_back(move(str原创 2020-08-03 21:12:56 · 875 阅读 · 0 评论 -
C++智能指针(一)
unique_ptrunique_ptr管理一个指针对象,并负责它的生命周期。当它被销毁时,其析构函数会删除关联的原始指针。string* str = new string("hello world"); cout << *str << endl; unique_ptr<string> pointer(new string("hello world")); cout << *pointer << endl; system("pause"原创 2020-08-03 10:37:44 · 172 阅读 · 0 评论 -
C++设计模式:对象创建模式——工厂方法
对象创建通过“对象创建”模式绕开new,来避免对象创建(new)过程中所导致的紧耦合(依赖具体类),从而支持对象创建的稳定。它是接口抽象之后的第一步工作。工厂机制:通过虚函数创建一个多态的new。设计原则:避免抽象类依赖具体类。class SplitterFactory {public: ISplitter* CreateSplitter() { return new BinarySplitter; }};class ISplitter {public: virtual void原创 2020-08-01 15:45:34 · 153 阅读 · 0 评论 -
C++设计模式:单一职责划分—修饰模式
在写一个面向对象的程序时,如果程序要扩展功能,使用继承的方法,会导致代码量急剧膨胀。例如:下面的例子就是写一个文件分割器,基类是stream类,而流可能是文件、网络、内存的流,然后在文件、网络、内存的流中,对于基类中的三个纯虚函数进行重写。每扩展一个功能,就要写针对FileStream,NetworkStream,MemoryStream这三个主体类中的所有功能函数进行编写。class stream{public: virtual char Read(int number)= 0; virtua原创 2020-08-01 12:31:13 · 222 阅读 · 0 评论 -
C++面试用题(二)const和Lambda表达式
constconst在C++中用来修饰内置类型变量,自定义对象,成员函数,返回值,函数参数。一、修饰普通类型变量const int a =7;int b=a;a=8;//不被允许最后a仍然是8,在加上了const关键字后,a就被编译器认为是一个常量,不允许修改。如果非要改,可以在const前面再加上Volatile关键字。 volatile const int a = 9; int *p = (int*)&a; *p = 8; cout << a <<原创 2020-07-30 21:18:08 · 2056 阅读 · 0 评论 -
C++面试用题(一)
堆和栈的区别:(注意不是数据结构里的堆和栈)栈(stack)由编译器自动分配释放,存放函数的参数值,局部变量的值。堆(heap)由程序员分配释放,如果不释放,最后程序结束时会被操作系统回收。全局区(静态区static):全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在同一区域,未初始化的全局变量和未初始化的静态变量在相邻的另一区域。int a;//系统在栈中为b开辟空间int* a=new int;//程序员在堆中申请空间存放aa=(int*)malloc(sizeof(i原创 2020-07-22 15:16:12 · 140 阅读 · 0 评论