C++
运妙心藏
C/Cpp/Java/C#/Lua/PHP/Android/Python 程序員 手游 前端 后台
展开
-
C++Primer 中文第五版(第12章代码记录)
如果eq在.cpp写了inline,则neq无论在.h和.cpp中都无法inline,没有想明白,我用的编译器是VS2022,X64。写Foo类的目的,用以测试打印构造、析构,因为普通的内置变量无法输出构造、析构过程。在使用及编写的过程了遇到了一个问题。有知道的望告之,不胜感激!就是inline问题。...原创 2022-07-19 10:07:10 · 689 阅读 · 1 评论 -
c++ 单例模式下实现内存自动回收或销毁
Java与C#中的单例模式可以不用考虑内存的回收,但C++的不考虑是不行...代码如下:class CSingleton{ // 其它成员 public: static CSingleton * GetInstance() { if (m_pInstance == NULL) m_pInstance = new CSingleton(); return m_pIn原创 2017-11-20 17:28:05 · 2296 阅读 · 0 评论 -
不允许指针指向不完整的类类型
头文件,头文件,头文件...#include "头文件"重要的事情说三遍...无语了,搞了半天原创 2017-11-16 20:30:32 · 3684 阅读 · 2 评论 -
vs中内存泄漏检测的方法总结
内存泄漏是一个比较头疼的问题,所以建议在分配内存是尽量使用智能指针。那么如何来进行内存泄漏的检测呢?这里总结两种方法。 第一种:#define CRTDBG_MAP_ALLOC //注意顺序不能乱#include <stdlib.h> #include <crtdbg.h> int main(void){ int* leak = ne...转载 2018-05-03 16:12:23 · 530 阅读 · 0 评论 -
解决错误 This file requires _WIN32_WINNT to be #defined at least to 0x0403
解决错误 This file requires _WIN32_WINNT to be #defined at least to 0x0403…看网上下载的代码,自己用vs2010打开,生成一个solution ,编译的时候出现错误: Error 1 error C1189: #error : This file requires _WIN32_WINNT to be #defined at...转载 2018-05-04 15:27:43 · 2597 阅读 · 1 评论 -
全球唯一名称字符串,GUID的生成使用
在工作的文档中出现了随机因子(Random Factor),不是我们通常使用的随机数srand,它最大的作用是避免随机相同1,涉及API及结构使用CoCreateGuid 函数即可。需要 objbase.h头文件。原型:HRESULT CoCreateGuid( GUID * pguid ); 其中GUID结构:typedef struct _GUID...转载 2018-05-15 09:53:25 · 1923 阅读 · 0 评论 -
VC++中的class"std::vector<Ty> 等需要有 dll 接口由 class XXX 的客户端"使用错误
这通常是由于以数据成员方式在DLL导出类中使用了模板类造成的,不同的地方的vector的实现可能不一样所造成的问题。所以我们应该将vector所依赖的模板类也导出。比如:#include <iostream>#include <vector>using namespace std;class __declspec( dllexport ) Test{pu...转载 2018-05-15 14:10:24 · 4071 阅读 · 3 评论 -
C++ 复习(菜鸟教程中的C++)
1,注释块注释符(/…/)是不可以嵌套使用的。此外,我们还可以使用 #if 0 … #endif 来实现注释,且可以实现嵌套,格式为:#if 0 code#endif你可以把 #if 0 改成 #if 1 来执行 code 的代码。这种形式对程序调试也可以帮助,测试时使用 #if 1 来执行测试代码,发布后使用 #if 0 来屏蔽测试代码。#if 后可以是任意的...原创 2018-06-04 16:03:52 · 2740 阅读 · 1 评论 -
C++ 一个类的成员函数可以是模板函数么?
1,一个普通类的一个成员函数可以成为模板成员函数么?答案是可以的,实例如下#include<iostream>#include<string>using namespace std;class PrintIt {public: PrintIt(ostream &os) :_os(os) { } template <t...原创 2018-06-25 18:05:07 · 25581 阅读 · 2 评论 -
Effective C++ 第三版 [条款23:prefer non-member non-friend to member functions.]
Effective C++ 3rd Item 23:prefer non-member non-friend to member functions.实例描述:class WebBrowser{ // 表示网页浏览器public: ... void clearCache(); //1,清除缓存 void clearHistory(...原创 2018-06-27 16:28:39 · 346 阅读 · 0 评论 -
Effective C++ 第三版 [条款24:隐喻类型转换的函数应该是个non-member]
条款24:当一个类需要类型转换时,应使用 non-member 函数例如:一个有理数类,想支持诸如加法、乘法等,是使用member 函数,还是使用 non-member 函数,还是使用 friend non-member 函数呢?1,使用成员函数(member function)时#include <iostream>using namespace std;cla...原创 2018-06-28 13:38:52 · 267 阅读 · 0 评论 -
C语言十六进制数据同字符串的相互转换
转载自:https://blog.csdn.net/lee353086/article/details/5249161使用函数如下:#include <string> #include <iostream> #include <cctype> #include <algorithm> /* 入口参数:pSrc 源十六进制...原创 2018-08-17 15:16:59 · 1200 阅读 · 0 评论 -
openssl从.pfx提取私钥的代码
openssl 在 windows 命令行中使用,命令行中可以带空格,openssl中也可以带空格从.pfx中提取私钥的三步关键点,第1步如果有密码,要输入密码:openssl pkcs12 -in 1.pfx -nocerts -nodes -out 1.keyopenssl rsa -in 1.key -out 1_pri.keyopenssl pkcs8 -topk8 -inform...原创 2019-04-02 17:44:54 · 1118 阅读 · 0 评论 -
error LNK2019: 无法解析的外部符号及fatal error LNK1104: 无法打开文件“XXX".lib“
error LNK2019: 无法解析的外部符号fatal error LNK1104: 无法打开文件“XXX".lib“error LNK2019: 无法解析的外部符号这个错之前见过很多次,能知道最根本的原因在于链接过程中没有搜索到程序用到的库文件,即*.lib本质上要检查以下几点:一、确保依赖项及生成顺序二、确保库使用的头文件要使用库的项目中要有包含使用的库相关代码的头文件头文...原创 2019-04-08 17:32:16 · 1394 阅读 · 0 评论 -
c++11 std::move() 的使用
std::move函数可以以非常简单的方式将左值引用转换为右值引用。通过std::move,可以避免不必要的拷贝操作。std::move是为性能而生。std::move是将对象的状态或者所有权从一个对象转移到另一个对象,只是转移,没有内存的搬迁或者内存拷贝。如string类在赋值或者拷贝构造函数中会声明char数组来存放数据,然后把原string中的 char 数组被析构函数释放,如果s...原创 2019-04-30 14:40:05 · 1033 阅读 · 0 评论 -
C++的sha256WithRSA签名
最近我公司有一个项目(C++)和其它公司(Java)合作出现的问题: java中的公私钥加解密都是调用其API函数,而C++中好像没有这方面的知识(至少以前我没有相关经验)有一个.pfx文件和两个.cer文件1 从.pfx中获取key文件方法1原版PFX证书openssl pkcs12 -in myssl.pfx -nodes -out server.pem (这里的pem格式为明文可...原创 2019-06-06 15:40:41 · 5301 阅读 · 0 评论 -
C++:C++位操作符常用基本手法及应用
基本:1, & 与位运算符 两者同是为1才为1,否则为02, | 或位运算符 两者有一个1(至少一个为1)就为1,否则为03, ^ 亦或运算符 两者有一个1(必须一个为1,一个为0)就为1,否则为04, ~ 求反运算符,为二进制求反,在二进制的基础上,每一位上为1的变成0,每一位上为0的变成1以上都是以二进制基础运算的5, ! 非 运用:1,变量 valu原创 2015-03-30 14:46:37 · 691 阅读 · 1 评论 -
C++ const 与 volatile
const 告诉编译器:这是不会改变的(允许编译器执行额外的优化);volatile告诉编译器:不知道何时会优化,防止编译器依据变量的稳定性作任何优化。原创 2015-07-18 01:44:54 · 378 阅读 · 0 评论 -
C++ 异常处理(三) exception类
1,exception头文件:#include C++ 可以把它用作其它异常类的基类。代码可以引发exception异常,也可以把exception用作基类,在从exception派生而来的类中重新定义一个名为what()的虚拟成员函数,它返回一个字符串,该字符串随实现而异。#include class bad_hmean : public std::exceptio原创 2015-04-03 01:41:10 · 21380 阅读 · 1 评论 -
C++ 异常处理(二)
异常处理的一个特性为:引发异常时编译器总是创建一个临时拷贝,即使异常规范与catch块中指定的是引用。伪代码:class problem { ... };...void super() throw (problem){ ... if (oh_no) { problem oops; //construct object throw oops; // throw i原创 2015-04-03 00:58:31 · 727 阅读 · 0 评论 -
C++学习笔记(一):关于cin与while的配合用法
#include using namespace std;const int Max=5;int main(){ int golf[Max]; cout int i; for(i=0;i { cout while(!(cin>>golf[i])) //如输入失败进入while循环原创 2014-09-01 14:52:55 · 1111 阅读 · 0 评论 -
C++学习笔记(二):关于文本I/O和文本文件前cin小特性的了解
关于char的文本读取:原创 2014-09-02 00:15:12 · 442 阅读 · 0 评论 -
C++学习笔记(三):文本文件的写入
#include #include using namespace std;int main(){char mobile[50];int year;double a_price;double d_price;coutcin.getline(mobile,50);coutcin>>year;coutcin>>a_price;d_pr原创 2014-09-02 00:35:29 · 507 阅读 · 0 评论 -
C++:关于C++的四个类型转换运算符
C++严格地限制允许的类型转换,并添加了4个类型转换运算符:1)dynamic_cast2)const_cast3)static_cast4)reinterpret_cast一,dynamic_cast运算符假设:class High{};class Low{};Hign * ph;Low * pl;当且仅当 Low 是High的可访问基类(直接原创 2015-04-10 11:03:07 · 575 阅读 · 0 评论 -
C++:C++ 空类的大小及相关继承类的大小
一个空类事实上并不空,它有一个隐晦的1个byte.原创 2015-02-05 16:03:43 · 1151 阅读 · 0 评论 -
C++:关于C++的RTTI (运行阶段类型识别)
RTTI 是运行阶段类型识别(Runtime Type Identification)的简称;RTTI只适用于包含虚函数的类:因为只有对于这种类层次结构,才能将派生类对象的地址赋给基类指针。一,RTTI的用途假设有一个类层次结构,其中的类都是从同一个基类派生而来的,则可以让基类指针指向其中任何一个类的对象。这样便可以调用这样的函数:在处理一些信息后,选择一个原创 2015-04-08 19:35:30 · 658 阅读 · 0 评论 -
C++:C++的string类的构造函数及对象之间的比较
头文件:#inlcude 下表有string的7个构造函数及C++11新增的2个构造函数;一,下例是几种string的应用:#include #include int main(){ using namespace std; string one("Lottery Winner!"); cout << one << endl; // Lottery W原创 2015-04-11 16:19:15 · 529 阅读 · 0 评论 -
C++ 异常处理(四) 有关异常处理的注意事项
有关异常处理,应在程序设计时就加入,而不是以后加入,但也有缺点:1,使用异常会增加程序的代码,降低程序的运行速度。2,异常规范不适用于模板,因为模板函数引发的异常可能随特定的具体化而定。3,异常与动态内存分配并非总能协同工作。如动态内存的例子:void test1(int n){ string mesg("I'm trapped in an endless loop原创 2015-04-08 10:40:58 · 743 阅读 · 1 评论 -
C++:STL模板类vector
需头文件:vector#include 要创建vector对象,可使用通常的vector来指定类型,另外,vector模板使用动态内存分配,因此可以初始化参数来指定大小数量。vector ratings(5); //固定大小int n;cin >> n;vector scores(n); // 运行时指定大小可以使用下标访问:ratings[0] = 9;for (int原创 2015-04-16 20:33:10 · 1985 阅读 · 0 评论 -
C++:关联容器(set,multiset,map,multimap)
关联容器(associative container)是对容器概念的一种改进.关联容器将值与键关联在一起,并使用键来查找值。例:值可以是表示员工信息(如姓名,电话,地址,性别,健康计划等)的结构体,而键可以是唯一的员工编号。为获取员工信息,程序使用键查找员工结构。关联容器的优点:提供了对元素的快速访问,也允许插入新元素,但不能指定元素的插入位置(原因是关联容器通常用于确定数据放置位原创 2015-04-20 20:15:42 · 1846 阅读 · 0 评论 -
C++:关于string转C-风格字符串
std::basic_string::c_str C++ Strings library std::basic_string const CharT* c_str() const; Returns a pointer to a nu原创 2015-04-15 20:47:43 · 682 阅读 · 0 评论 -
C++:关于容器的种类
表达式返回类型含义容器a.front()T&*a.begin()vector,list,dequea.back()T&*--a.end()vector,list,dequea.push_front(t)voida.insert(a.begin(),t)list,dequea.push_back(t)原创 2015-04-20 12:12:34 · 752 阅读 · 0 评论 -
C++:智能指针
一,先请看为什么需要智能指针?void remole(std::string& str){ std::string * ps = new std::string(str); // ... str = *ps; // 这之后应该追加 delete ps; return;}// 显然new了,但没有delete,会导致内存泄漏// 所以一旦new了,别忘记在return之前加上原创 2015-04-16 18:17:19 · 514 阅读 · 0 评论 -
C++ 全局变量 局部变量 静态变量 及 extern
全局变量:全局变量是在所有函数体的外部定义的,程序 的所有地方可以使用,甚至在其他文件的代码中也可以使用(但要使用extern),也就是说全局变量不受作用域的影响,总是可用的。换句话说,就是全局变量的生命周期一直到程序的结束。如果在一个文件中使用extern来声明另一个文件中存在的全局变量,那个这个文件就可以使用这个变量。例://file1#include usin原创 2015-07-18 01:04:37 · 798 阅读 · 0 评论 -
C++ 异常处理(一)
例:计算两个数的调和平均数(两字数字的倒数的平均数的倒数)表达式为:2.0* x * y / (x + y)这里x = -y是不允许的,因为上述公式将导致被0除。方法一:调用 abort() 函数调用 abort() 函数,需头文件:cstdlib (或 stdlib.h)其典型实现是向标准错误流(即cerr使用的错误流)发送消息 abnormal program term原创 2015-04-02 20:54:08 · 1316 阅读 · 0 评论