c++
白雲綠水
这个作者很懒,什么都没留下…
展开
-
给结构体中std::string成员变量赋值失败
给结构体中std::string成员变量赋值失败的行为:在c++中结构体中包含std::string时,要用new去分配内存,不用malloc在用new一个对象时,不能用memset去赋0操作,否则不能赋值...原创 2016-09-21 13:08:55 · 3864 阅读 · 0 评论 -
区分右值引用和universal引用
本文翻译自《effective modern C++》,由于水平有限,故无法保证翻译完全正确,欢迎指出错误。谢谢!古人曾说事情的真相会让你觉得很自在,但是在适当的情况下,一个良好的谎言同样能解放你。这个Item就是这样一个谎言。但是,因为我们在和软件打交道,所以让我们避开“谎言”这个词,换句话来说:本Item是由“抽象”组成的。为了声明一个指向T类型的右值引用,你会写T&...转载 2018-11-19 13:22:25 · 175 阅读 · 0 评论 -
理解std::move和std::forward
本文翻译自《effective modern C++》,由于水平有限,故无法保证翻译完全正确,欢迎指出错误。谢谢!根据std::move和std::forward不能做什么来熟悉它们是一个好办法。std::move没有move任何东西,std::forward没有转发任何东西。在运行期,它们没有做任何事情。它们没有产生需要执行的代码,一byte都没有。std::move和std:...转载 2018-11-19 12:40:59 · 418 阅读 · 0 评论 -
理解template类型的推导
本文翻译自modern effective C++,由于水平有限,故无法保证翻译完全正确,欢迎指出错误。谢谢! 一些用户对复杂的系统会忽略它怎么工作,怎么设计的,但是很高兴去知道它完成的一些事。通过这样的方式,c++中的template类型的推导取得了巨大的成功。数以万计的程序员曾传过参数给template函数,并得到了满意的结果。尽管很多那些程序员很难给出比朦胧的描述更多的东西,...转载 2018-11-21 14:41:53 · 642 阅读 · 0 评论 -
C++ POD(Plain Old Data)类型
C++ POD(Plain Old Data)类型作者: NickYang 分类: 技术文章,程序开发 发布时间: 2012-12-30 11:41群里发过来一份他们公司的笔试题,看了下,发现里面考了一个判断如下是否为POD类型,没搞明白什么是POD,多方查阅后,发现其实是指一个C风格代码的概念。POD全称Plain Old Data是指C风格的struct结构体定义的数据结构,其中s...转载 2018-11-16 19:31:08 · 569 阅读 · 0 评论 -
模板类,模板成员函数,模板嵌套类
在模板类中声明一个模板成员函数,定义方式:.h文件 template <typename T, std::size_t N>struct MsgOperaTrait : MsgOperaBase{ enum {MSGID = N}; template<class K> void NotifyCardOperFunc(K* pCardOp...原创 2018-11-16 11:55:28 · 1006 阅读 · 0 评论 -
c++11新特性:enable_shared_from_this
enable_shared_from_this是一个模板类,定义于头文件<memory>,其原型为:template< class T > class enable_shared_from_this; std::enable_shared_from_this 能让一个对象(假设其名为 t ,且已被一个 std::shared_ptr 对象 pt 管理)...转载 2018-08-21 20:28:48 · 241 阅读 · 0 评论 -
多人开发的基础---组件化编程,仿COM篇
引言: 在大型项目的开发中,随着开发进度的进行,我们经常碰到模块之间耦合度太高的问题:由于开发人员经常要在别的模块中调用自己实现的功能,经常随意在某个函数中随意添加调用代码,造成了被修改的那个函数体过长,逻辑混乱。另一个问题是随意包含头文件:开发人员在开发中经常为了要使用某些类的功能而包含引用类的头文件造成类之间的耦合度太高,被包含类的头文件一处轻微修改经常就会引起整个程序大规模的编译和...转载 2018-08-16 09:41:24 · 1582 阅读 · 3 评论 -
c++可变参数模板
可变模板参数函数1.逗号表达式展开参数包template<class F, typename... Args>void expand(const F& f, Args... args){ initializer_list<int>{(f(std::forward< Args>(args)), 0)...};}//expand([](a...原创 2018-08-14 21:43:21 · 793 阅读 · 0 评论 -
Windows系统时钟间隔
Windows系统时钟间隔发表于2013 年 9 月 1 日由张佩引用注明>> 【作者:张佩】【原文:www.yiiyee.cn/blog】下载:ClockInternal.rar (1324)系统时钟间隔是个很少被关心到的系统标量,它反映了系统产生时钟中断的频率,间隔越小频率越高,反之亦然。每当时钟中断产生,系统相关的中断函数将会处理这个中断。时钟中断处理函数会更新系统时间,检查内核...转载 2018-07-06 09:09:49 · 663 阅读 · 0 评论 -
DECLARE_MSG_MAP参考实例
#pragma once#include <wtypes.h>#include <afxmsg_.h>class CModule;typedef BOOL(CModule::*MODULE_PMSG)(LPCONTEXT_HEAD lpContext, LPREQUEST lpRequest);struct MODULE_MSGMAP_ENTRY{ ...转载 2018-07-05 20:39:26 · 260 阅读 · 0 评论 -
为什么不要在构造函数中调用虚函数
基类部分在派生类部分之前被构造,当基类构造函数执行时派生类中的数据成员还没被初始化。如果基类构造函数中的虚函数调用被解析成调用派生类的虚函数,而派生类的虚函数中又访问到未初始化的派生类数据,将导致程序出现一些未定义行为和bug。参考:https://www.artima.com/cppsource/nevercall.html...原创 2018-06-22 13:25:38 · 353 阅读 · 0 评论 -
函数调用方式--__thiscall调用方式和__cdecl,__stdcall有什么区别
函数调用方式--__thiscall调用方式和__cdecl,__stdcall有什么区别首先,__thiscall是关于类的一种调用方式,它与其他调用方式的最大区别是: __thiscall对每个函数都增加了一个类指针参数 class aa { void bb(int cc); }; 实际上bb的函数原形是void bb(aa &...转载 2018-05-29 22:29:40 · 3627 阅读 · 0 评论 -
关于一个类的空指针可以调用成员函数的问题:静态绑定
首先看一下代码://============================================================================// Name : Adapter.cpp// Author : // Version :// Copyright : Your copyright notice// Descrip...原创 2018-05-29 22:28:49 · 419 阅读 · 0 评论 -
C++对象模型学习笔记
c++对象模型翻译 2016-10-13 21:21:31 · 217 阅读 · 0 评论 -
C++中的srand(time(null))利用时间设置随机种子产生随机数
首先需要声明的是,计算机不会产生绝对随机的随机数,计算机只能产生“伪随机数”。其实绝对随机的随机数只是一种理想的随机数,即使计算机怎样发展,它也不会产生一串绝对随机的随机数。计算机只能生成相对的随机数,即伪随机数。 伪随机数并不是假随机数,这里的“伪”是有规律的意思,就是计算机产生的伪随机数既是随机的又是有规律的。怎样理解呢?产生的伪随机数有时遵守一定的规律,有时不遵守任何规律;伪随机数...转载 2018-03-12 23:02:08 · 1941 阅读 · 0 评论 -
linux c++动态库类导出
下面举例说明: 1.exportClass.h #ifndef __EXPORT_CLASS_H #define __EXPORT_CLASS_H class ExportClass { public: void printf(); }; extern "C" ExportClass * createObject();...原创 2016-09-27 09:32:32 · 7044 阅读 · 0 评论 -
检查类中是否有某个成员函数
1.检查类中是否有成员函数,不包括继承的成员函数//例子1template<typename T>struct has_no_destroy{ template <typename C> static char test(decltype(&C::no_destroy)); template <typename C> static i...翻译 2019-08-12 13:28:38 · 578 阅读 · 0 评论