c++
文章平均质量分 81
Quellaaa
这个作者很懒,什么都没留下…
展开
-
不用加减乘除实现加法
不用加减乘除实现加法其实看到这玩意,第一反应就是计算机原理东西,就是二进制运算然后就从二进制角度讨论这玩意吧~学过小学加法都晓得,加法是从个位加法开始,然后进阶十位加法,解这玩意的思路也可以这样:以2+3为例,转为二进制为10+11不考虑进位的结果先枚举下所有情况,再总结规律:0+1=10+0=01+0=11+1=0(由于不考虑进位,所以就只看最低位的值)从上面结果看,发现一个规律相同的值结果为0,不同的值结果为1,这就是异或运算符呀~所以不考虑进位结果用异或计算。只考虑进位结果原创 2021-01-22 17:20:32 · 344 阅读 · 1 评论 -
多重继承下父子类之间的类型转换
文章目录一、前言二、情景模拟复现三、开始分析1. 情况12. 情况23. 情况34. 情况4四、运行结果五、总结一、前言在日常工作中踩了一个坑,现象是:从一个dll里获取导出类A,然后调用类A的FunA,结果FunA没有被调用,相关代码简化如下:class AImpl : public OtherClass, public A{ // OhterClass 不包含类A的FunA ... // 用户通过该函数获取A的指针,结果用A的指针调用FunA失败 void Query(原创 2021-01-04 20:22:11 · 1394 阅读 · 0 评论 -
《c++高级编程》第一章
今天看了《c++高级编程》第一章,本章主要内容就是介绍c++一些基本语法,最后以一个“员工记录系统”引用收尾,本篇文章就是想说说“员工记录系统”。学会分解需求当我看到这个名字,“员工记录系统”,获知其几个需求:新增员工、解雇员工、提高工资、展示全部在职员工和非在职员工,立马就想着如何实现了。这个思考方式太过激进了,需要改进。当我们看到任何一个需求,尽管再简单,也要对其进行分解:1)员工新增和减少 2)工资提高 3)全部员工信息需要展示,所以需要保存由此可见,员工是个对象,存储系统也是个对原创 2020-09-08 20:57:20 · 332 阅读 · 0 评论 -
关于stl中关联容器的一些基础东西
题外话最近发现自己日常工作中虽然用c++编码,但是没咋用stl的东西,所以就开始补充这方面的知识正题1. 声明set容器装的数据类型时可以顺便定义比较函数方法。如:普通的声明set容器装类型的方式:set<int> ss声明set容器时还定义比较方法(PS:写比较函数时注意相等比较要返回false):// 要写成结构体对象方式,而不是函数方式,因为set模板的参数是类型,而不是地址或函数struct compare{ bool operator()(cons原创 2020-08-28 15:58:54 · 133 阅读 · 0 评论 -
针对vector或string的shrink-to-fit的swap技巧
前言有时可能会遇到这样一种情况:声明一个vector变量为vec,前期会有很多元素存储到vec中,导致vec的capacity变大;后期因为一些原因要对vec的元素进行筛选,删除了vec里一些元素,但是没有改变vec的capacity,这会使vec占用很大内存,即size小于capacity。解决思路vector<container> vec;vec.push_back(a);...// 做了元素增加和筛选后,这时vec的size远远小于capacity...vector原创 2020-08-26 17:14:56 · 317 阅读 · 0 评论 -
#代码优化之匹配相关
1、原代码:if( strkey.comparenocase()|| strkey.comparenocase()|| strkey.comparenocase()|| strkey.comparenocase()|| strkey.comparenocase()|| strkey.comparenocase()|| strkey.comparenocase()|| strkey.comparenocase()|| strkey.comparenocase()|| strkey.comp原创 2020-08-24 14:31:28 · 215 阅读 · 0 评论 -
实现最小栈
题目实现一个这样的栈,这个栈除了可以进行普通的push、pop操作以外,还可以进行getMin的操作,getMin方法被调用后,会返回当前栈的最小值。栈里面存放的都是 int 整数,并且数值的范围是 [-100000, 100000]。要求所有操作的时间复杂度是 O(1),空间复杂度也能O(1)的话可加分。代码class MinStack{public: MinStack(){...原创 2020-05-07 17:16:10 · 211 阅读 · 0 评论 -
C/C++代码跨平台编译注意问题
平台包括: windows7(32bit and 64bit), windows 8.1(32bit and 64bit, desktop, app store, metro ),windows phone, Mac(32bit and 64bit), iOS(32bit and 64bit, x86, x64, armv6,armv7-a, arm64), Linux(32bit an...转载 2020-04-15 15:52:14 · 1970 阅读 · 0 评论 -
c++ 跨平台开发
前言要达到c++跨平台开发目的,我打算从为什么C++不能跨平台开发和如何实现跨平台开发这两个方面入手为什么C++不能跨平台开发C++不能跨平台,不是指源程序不能跨平台,而是可执行文件不能跨平台。因为C++源程序要经过预处理、编译、汇编和链接过程才生成可执行文件,但由于这过程中会受到平台限制,如汇编语言有不同版本,和平台有关(CPU、操作系统和编译器等);所以不能将windows平台...原创 2020-04-15 15:41:51 · 7836 阅读 · 0 评论 -
三个调用约定的区别
调用约定 参数传递方向 谁清理栈 使用场合 修饰函数符号表格式 __cdecl 从右向左 调用方 C/C++、MFC的默认方式; 可变参数的时候使用 _函数名 __stdcall 从右向左 被调用方退出函数时清理 Win API _函数名@参数名 __fastcall 从右向左, 但左边开始的两...原创 2020-04-13 17:21:38 · 197 阅读 · 0 评论 -
volatile和explicit含义
直译首先看其中文意思,辅助理解记忆。volatile:adj. [化学] 挥发性的;不稳定的;爆炸性的;反复无常的n. 挥发物;有翅的动物explicit:adj. 明确的;清楚的;直率的;详述的在c++的含义1)volatile:用于告诉编译器不要优化,在运行期再取其值。程序在进行编译的时候, 编译器会进行一系列的优化.比如, 某个变量被修饰为 c...原创 2020-04-05 16:56:45 · 250 阅读 · 0 评论 -
运算符优先级
前言踩了几次关于运算符优先级的坑,所以就写这个文章mark一下~正文 优先级 运算符 名称或含义 使用形式 结合方向 说明 1 [] 数组下标 数组名[常量表达式] ...原创 2020-03-27 18:13:40 · 186 阅读 · 0 评论 -
为什么C++用C函数时要加extern c
C++相对于C语言而言支持函数重载是其极大的一个特点,相信在使用C语言的时候大家如果要写一个实现两个整型数据相加的函数还要写一个浮点型数据相加的函数,那么这两个函数的名字绝对不可以一样,这样无疑在我们使用这个函数的时候增加了复杂性,但是在C++中我们却可以很好的解决这个问题,因为在C++中函数是支持重载的也就是说两个函数的函数名可以一样,这样并不会出现函数名重定义的问题,但是我们在...转载 2020-03-16 18:45:46 · 814 阅读 · 0 评论 -
VS 运行库MT和MD的区别
前言日常工作中总会遇到将项目统一配置为MD,知其然不知所以然。。。。。。所以就有了这篇文章来知其所以然。。。。。VC项目属性→配置属性→C/C++→代码生成→运行时库 可以采用的方式有:多线程(/MT)、多线程调试(/MTd)、多线程DLL(/MD)、多线程调试DLL(/MDd)、单线程(/ML)、单线程调试(/MLd)。目前Win7、Win10等,选择MD问题不大,但是XP等一些比较...转载 2020-03-02 16:53:59 · 1428 阅读 · 1 评论 -
在程序中生成dump
概要主要涉及的函数有:1、SetUnhandledExceptionFilter(参数)——》程序出现崩溃就会调用该函数2、重写【参数】的回调函数:格式为LONG WINAPI UnhandledExceptionFilterToCreateDump(PEXCEPTION_POINTERS pExInfo)——》程序崩溃时系统就会调用这个回调函数3、MiniDumpWriteDum...原创 2020-01-20 16:34:31 · 266 阅读 · 1 评论 -
void**的使用
eg:GetContext(const wchar_t* pKeyName, void** pValue, int& nLen);其中pValue是在GetContext中获取的值,并在该函数内部分配内存,调用GetContext的在调用地方调用ReleaseData释放该内存。该函数内部做如下使用:step1)WCHAR *pContent = new WCHAR[MA...原创 2019-12-31 17:36:14 · 1539 阅读 · 0 评论 -
curl库的用法
介绍libcurl作为是一个多协议的便于客户端使用的URL传输库,基于C语言,提供C语言的API接口,支持DICT, FILE, FTP, FTPS, Gopher, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, POP3, POP3S, RTMP, RTSP, SCP, SFTP, SMTP, SMTPS, Telnet and TFTP这些协议,同时支持使用...原创 2019-11-22 16:02:45 · 4217 阅读 · 0 评论 -
c++重载运算符实现分数加减乘除
实现结果如下图所示:代码如下所示:#include <iostream>using namespace std;class Rational {public: Rational operator+(Rational rhs); Rational operator-(Rational rhs); Rational operator*(Rational rhs); Rat...原创 2018-05-03 11:27:24 · 4725 阅读 · 2 评论 -
Jsoncpp库编译为静态库及使用其读写json文件
题外话:最近又遇到读取json文件问题,虽然一个月前也利用过Jsoncpp库读取json文件,但是现在只是知道json文件可以用jsoncpp库读取,但是不知道怎么读以及怎么将jsoncpp库编译为静态库。为了加深印象,自己也写篇小白教程,以后要是忘了还可以再瞅瞅~(◉ω◉υ)⁼³₌₃环境:VS2008 + jsoncpp-src-0.5.0一、将Jsoncpp库编译为静态库1. 下载...原创 2018-10-30 15:19:24 · 2295 阅读 · 0 评论 -
变量命名规范
1. 用户界面控件命名规范2. 用户界面控件命名规范3. 匈牙利命名法前缀参考文章:微软编程标准规范_v1原创 2018-11-21 17:01:04 · 156 阅读 · 0 评论 -
动态加载dll的接口类
在上篇文章https://blog.csdn.net/Quellaaa/article/details/83989676中还留下了待补充的知识点——动态加载dll的类。有经验的前辈指点道:尽量用动态链接方式加载dll,因为静态链接方式加载dll要加入lib,当工程庞大时太多lib会加重工程负担,并可能会出现redefine问题。因此本文章关键词为:动态链接加载、dll、接口类。一、接口类...原创 2018-11-21 17:28:12 · 2186 阅读 · 0 评论 -
c++类的几种成员函数声明后必须要定义吗?
c++类的几种成员函数声明后必须要定义吗?1. 构造函数和析构函数test.h#pragma onceclass CTest{public: CTest(); ~CTest();};test.cpp#include "stdafx.h"#include "test.h"情况一:main.cpp#include "stdafx.h"#include "test....原创 2019-07-10 14:23:59 · 3393 阅读 · 0 评论 -
STL迭代器的一种神奇用法
Q:实现将文本文件的数字保存到vector或list中A:#include <fstream>#include <vector>#include <list>usign namespace std;int main(){ ifstream dataFile("data.dat"); istream_iterator<...原创 2019-07-16 10:57:41 · 157 阅读 · 0 评论 -
C++中指针的强制转换
转自:https://blog.csdn.net/u012273127/article/details/53260978其又转自:http://blog.csdn.net/mhjcumt/article/details/7355127本博文转载目的:对格式做调整,并在某处加以个人理解做个笔记。目录一、指针地址的本质和存储二、指针的转换三、万能指针四、指针强制转换的实...转载 2019-08-02 11:51:47 · 1852 阅读 · 0 评论 -
c++ 以UTF-16LE编码方式保存文件
1. 前言正常情况下,c++保存文件的编码方式一般为ANSI。但为了满足一些需求,会要求保存文件的编码方式为UTF-16LE、UTF-8或Unicode。了解相关知识发现,决定文件编码方式主要是在于文件的BOM(Byte Order Mark)。 0xFE 0xFF => UTF-16 大端序 0xFF 0xFE => UTF-16 小端序 0x00...原创 2019-09-02 14:10:21 · 2979 阅读 · 0 评论 -
socket编程
原创 2018-05-04 20:28:30 · 134 阅读 · 0 评论