随笔分类 - C++
摘要:5年前在学校,写了一篇关于单例设计的Blog,最近需要写3个单例对象,如果每个对象都写一遍单例模式,显得很冗余。所以需要应用单例模板类。 基于之前的内容:https://www.cnblogs.com/wangpei0522/p/4460529.html 很容易扩展为使用模板继承的单例辅助类: 1
阅读全文
摘要:struct X { int a; }; shared_ptr<X> px(new X); shared_ptr<int> pi(px, &px->a); shared_ptr<X> sp1(new X); shared_ptr<X> sp2(sp1, new X); // ERROR: delet
阅读全文
摘要:Q1. 什么是universal reference? If a variable or parameter is declared to have type T&& for some deduced type T, that variable or parameter is a universal
阅读全文
摘要:本文记录我使用MIC过程中,常见的错误。 1. undefined symbol: _ZSt3maxIiERKT_S2_S2_" ... offload error: cannot load library to the device 0 (error code 20) 这个错误太难定位了,我最后使
阅读全文
摘要:我们在使用宏定义一类的技术时,容易发生符号的重定义,特别在这个符号是全局变量时。可以使用__decspec(selectany)提示编译器,可以重定义此符号。1.cppint sym = 1;int main(){...}2.cppint sym = 1;void function(){...}//...
阅读全文
摘要:我们都必须意识到,写程序其实是一个心思要细腻的活~一开始,我的代码大概是这个样子的:class B;class A{public: A(){} A(int a) : id(a){} private: B b; };class B{ public: B(){} B(int b): ...
阅读全文
摘要:阅读Mitsuba的代码的时候,发现了一个有意思的地方:#define Log(level, fmt, ...) do { \ mitsuba::Thread *thread = mitsuba::Thread::getThread(); \ if (EXPECT_NOT...
阅读全文
摘要:最近阅读Mitsuba的架构,有一个挺有意思的设计,开始没看明白。下面,我把限制对象的申请分两个方面讲述:1.限制对象在堆/栈上申请;2.限制对象申请的个数。//所有的资料,都可以在《more effective c++》上找到有一个基类Object,它的析构函数是protected访问权限的。并且...
阅读全文
摘要:今天遇见了一个挺逗的问题,这个问题已经不是第一次绊脚了。放到这里,提醒自己的同时,也相信学习C++的朋友一定都会经历同样的问题。还是老风格,先看代码: 1 class A 2 { 3 public: 4 A(int a) 5 { 6 } 7 }; 8 class B : public A...
阅读全文
摘要:摘自《effective C++ 3rd>考虑下列代码:class base{ private: std::string s;public: base():s("base") { } void p() { std::coutp(2); //ok}上面的代码展示了,d...
阅读全文
摘要:曲折探索后,这个问题算是水落石出。我们都被告诫,new和delete,new[]和delete[]要成对出现。如果使用delete 释放new[] 申请的空间会发什么?如下:T* p = new T [1024];....//do somethingdelete p;//会发生什么?我先告诉你,如果...
阅读全文
摘要:我们定义了一个可以传入右值引用的构造函数的类B,在使用std::move的时候,我们非常容易犯一个错误。看下面的代码:class B{public: B() :s(10), ptr(new int[s]) { std::cout void function(T&& a);如...
阅读全文
摘要:新版的C++标准库出现了很多C++11的新特性,刚开始接触确实很费劲,特别是右值引用和move函数这种基于效率的考虑损失了语言的简单直接的特性,废话不多说,先看右值引用。C++中根据const和non_const,lvalue和rvalue可分为四类对象 non_const const...
阅读全文
摘要:C++11中出现了uniform initialization的概念:int a1 = {1};//okint a2 = {1.0};//错误,必须收缩转换int array1[] = {1,2,3,4};//okint arrya2[] = {1.0,2.0,3.0,4.0};//ok注意a2的初...
阅读全文
摘要:众多设计模式中最简单的一个。 考察两个地方:1.如何实现单例;2.如何正确的释放这唯一的实例。 代码非常的简单,注意判断ptr_singleton为空的情况,别粗心这题就是送分。 嗯,唯一的技巧吧,就是利用了C++在结束时自动释放所有的静态成员。(额,你可能会迷惑,ptr_singleton也是静态
阅读全文
摘要:《Effective C++》条款4中提到了”留意不同编译单元内的non-static变量的初始化顺序“下文的描述得很详细,转载过来了。http://blog.csdn.net/chgaowei/article/details/6001433static对象包括global对象,定义于namespa...
阅读全文
摘要:(必须吐槽一句,博客园的审批对于这样的细节问题似乎有点不屑,恰恰这样的问题才是记录在这里常翻阅的,否则项目代码上git,放这里干什么)首先,由global变量引出我们今天的问题:C++中global变量是全局可见的,可以在不同的compilation unit(编译单元)中使用。如下两个文件:1.c...
阅读全文
摘要:《深入C++对象模型》绝对是一本值得深读的一本书,书里多次出现一句话,“一切常规遇见虚继承,都将失效”。这是一个有趣的问题,因为C++标准容忍对象布局的实现有较大的自由,出现了各编译器厂商实现的方式不同。今天谈谈visual studio2013多重虚继承下对象布局。有错不要客气,不要吝啬你的留言。...
阅读全文
摘要://下面的代码思想取自efficient c++ 1 ////////////////////////////////////////////////////////////////////////// 2 //可分为:1.内存池本身的创建和删除 3 // 2.内存池中空闲内存的维护 ...
阅读全文
摘要:一直对static和全局变量的作用域模模糊糊,今天读到一篇文章,写得很详细。温故能知新。下面的内容转载自:http://developer.51cto.com/art/201104/256820.htm—————————————————————————————————————————————————...
阅读全文
浙公网安备 33010602011771号