c++
露露与之
这个作者很懒,什么都没留下…
展开
-
进一步了解new操作符
我们又了解new/delete多少呢?关于new/delete操作符,我们在对空间的请求(对于类来说)上一共进行三步:对于new:先进行空间分配,再进行调用构造函数。对于delete:先进行对象的析构,再进行空间的回收。在new与delete中的第二步,实际上都是调用一个全局函数operator new/delete对空间进行分配/回收。在这个全局构造函数中::operator原创 2016-06-03 01:03:15 · 404 阅读 · 0 评论 -
shared_ptr (二)aliasing 与 owner_before
aliasing constructorshared_ptr 提供了这样的一个构造函数,形式如下:template <class U> shared_ptr (const shared_ptr<U>& x, element_type* p) noexcept;这个构造函数称为 aliasing constructor。这个构造函数的作用如下:引用自【1】aliasing constructor原创 2017-06-18 18:19:00 · 1218 阅读 · 0 评论 -
shared_ptr(一)
普通指针与分享指针普通指针的操作解引用:int ptr = new int{};*ptr; //解引用//------------------------class Test{public: int _value;};Test* test = new Test{};test->_value; //间接引用操作符和pod类型的“拷贝构造函数”,与“赋值构造函数”进行浅拷贝。还有两个个“原创 2017-06-17 23:47:57 · 440 阅读 · 0 评论 -
探究c++对象模型之写在前面
第一章.关于对象前言c语言中数据和处理是分开声明的,也就是说语言本身没有支持数据和处理的关联性,我们把这种程序方法称为程序性。而有一组以功能为向导的函数所驱动,共同处理共同的外部数据,这种称为对象性。对象与成本关于c++的对象,有人说由程序性到对象会增加成本,我们看看是否真的是这样的:先考虑对于一个拥有成员变量的类,这个并没有增加成本。然后当类中增加原创 2016-08-03 19:06:32 · 372 阅读 · 0 评论 -
探究c++对象模型之data语义学(一)
c++标准中有这样一个规定: "no object shall have thesame address in memory as any other variable". 由此规定,导致几乎所有的编译器对一个空类都会添加一个char。 那什么是一个空类呢: ·Has static members /member function ·Has no vir原创 2016-09-25 03:30:19 · 445 阅读 · 0 评论 -
c++11多线程生产者消费者问题
生产者-消费者(producer-consumer)问题,也称作有界缓冲区(bounded-buffer)问题,两个进程共享一个公共的固定大小的缓冲区。其中一个是生产者,用于将消息放入缓冲区;另外一个是消费者,用于从缓冲区中取出消息。问题出现在当缓冲区已经满了,而此时生产者还想向其中放入一个新的数据项的情形,其解决方法是让生产者此时进行休眠,等待消费者从缓冲区中取走了一个或者多个数据后再去唤醒它。原创 2016-08-23 17:17:02 · 675 阅读 · 0 评论 -
类成员指针
c++类成员指针初步介绍原创 2016-08-02 00:31:48 · 461 阅读 · 0 评论 -
SFINAE
其实这个东西我们早已受益,想想declval。原创 2016-07-04 00:41:28 · 413 阅读 · 0 评论 -
协变返回类型
我们从代码中看什么叫做协变返回类型:首先我们定义四个类:class shapeEdite {public: virtual void pop()const { std::cout << "i am father" << std::endl; }};class shape {public: virtual const shapeEdite * getEdit原创 2016-05-22 23:04:48 · 404 阅读 · 0 评论 -
【算法与数据结构】KMP算法
Kmp由于其超低的时间复杂度O(m+n),因而被应用到广泛的应用到各中编辑器上。作为基础算法,网上有太多的人孜孜不倦的写教程,所以具体思想也就不再赘述。由此看来有些程序员为了造轮子,解释思想,真是不择手段。原创 2017-11-17 00:43:47 · 467 阅读 · 0 评论