
c++学习
文章平均质量分 89
richerg85
AI未来已来,全面拥抱AIGC-openrabbit.net
展开
-
C++与Java之RSA签名与验签
最近一段时间一直被一个事情困扰:支付相关RSA签名与验证签名,服务器使用java,客户端是c++的程序,在C++端验证签名的时候,试用了很多方法都无法签名通过。在java中,签名和验证签名很容易调用现有的类实现,但是在c++中却是不太容易。 采用openssl原生的c++程序,不行; 在网上搜索了很久,也翻墙google了,试用了很多,也不行; 用了其他网友借鉴原创 2016-06-20 21:39:27 · 11838 阅读 · 7 评论 -
c++头文件包含注意要点(收藏)
C++ 中类的声明和类的定义分开几乎成了一个不成文的规定。这样做的好处是使得类的声明和实现分开,清晰明了,同时便于库函数发布。但是在实际编程中由此也常常 引起了一些由于头文件的包含顺序问题而产生的符号未定义的编译错误,不明白其中原理有时会让人很头疼。要消除符号未定义的错误的编译错误,最基本的一个做 法就是在引用一个符号(包括变量,函数,结构,类等)之前确保它已经声明或者已经定义。 实原创 2012-08-17 16:10:00 · 3377 阅读 · 0 评论 -
如何学好C++语言(转载,收藏)
前段时间写了一篇如何学好C语言,就有人回复问我如何学好C++,所以,我把我个人的一些学习经验写在这里,希望对大家有用。首先,因为如何学好C语言中谈到了算法和系统,所以这里就只谈C++语言。C++是最难的语言。这个世界上最难的编程语言可能非C++莫属了。你千万不要以为几天就可以学好C++,C++的学习曲线是相当BT的,你可以看看这篇文章。C++是一门很自由的语言,自由到了有点BT和恐怖的地步原创 2012-06-25 16:07:00 · 1152 阅读 · 0 评论 -
C++类型转换(Type Casting)
所谓类型转换即为转换一个给定的类型到另一个类型,我们已经知道一些类型转换方式:隐式类型转换 隐式类型转换不需要请求任何操作。当一个值拷贝给另一个兼容的类型的时候会自动执行,例如:short a = 200;int b;b = a; 在此例中,a的值从short类型到int类型提升,并且不需要任何类型转换操作。这个转换是我们都知道的标准转换。标准转翻译 2012-05-09 17:37:16 · 3356 阅读 · 0 评论 -
c++操作符重载
c++操作符重载(翻译)翻译自:http://www.cplusplus.com/doc/tutorial%20%20/classes2/对于c++中基本的类型,我们可以采用如下方式进行操作:int a, b, c;a = b + c;但是,对下面的操作就会产生编译错误,因为我们没有定义这个操作类型有“+”操作。struct { string product翻译 2012-02-22 14:35:37 · 898 阅读 · 0 评论 -
c++中WaitForSingleObject函数解析(1)
函数的原型:DWORD WaitForSingleObject( HANDLE hHandle, // handle to object DWORD dwMilliseconds // time-out interval );hHandle:(事件)对象的句柄;dwMilliseconds:时间间隔,毫秒级WaitForSingleObject 函数当出现如下一种情况时才返回:原创 2012-03-14 18:29:46 · 17285 阅读 · 1 评论 -
STL学习之priority_queue适配器
priority_queue 优先队列是容器适配器类型,根据某些严格的弱排序条件,专门设计了第一个元素总最大元素的容器。 很像堆,可以检索最大的堆元素(在优先队列中的最顶的元素)并且可以无限制的插入元素。 优先队列作为容器适配器, 用一个具体的容器类的封装对象作为其底层容器,提供一个具体的访问容器元素的成员函数集合。元素都是从具体的容器的“尾部”进原创 2012-06-30 13:45:06 · 1593 阅读 · 0 评论 -
STL学习之set容器
set容器只是单纯的键的集合。 除了两种例外情况外,set容器支持大部分的map操作。 两种例外包括:set容器不支持下标操作符,而且没有定义mapped_type类型。在set容器中,value_type类型不是pair类型,而是与key_type相同的类型。与map一样,set容器存储的键也必须唯一,而且不能修改。 构造函数:explic原创 2012-06-24 16:35:40 · 6816 阅读 · 0 评论 -
STL学习之stack适配器
LIFO stackstack是一个容器适配器类型,它被设计成LIFO(最后一个进入栈的,第一个出),并且元素的插入和提取操作只能在容器的尾部。stack作为容器适配器, 用一个具体的容器类的封装对象作为其底层容器,提供一个具体的访问容器元素的成员函数集合。元素都是从具体的容器的“尾部”进行推送(push)和拉出(pop)操作,这个“尾部”就是所谓的栈顶(top)。底层容器可以是任何的原创 2012-06-26 15:43:03 · 2124 阅读 · 0 评论 -
STL学习之queue适配器
queueFIFO queuequeue是容器适配器类型,它支持FIFO(first in first out)即元素插入从"尾部(back)",弹出从“前面(front)”。底层容器可以是任何的标准容器类模板或者其他的具体的设计容器类。仅有的要求是需要支持下面的操作:front()back()push_back()pop_front()因此可以使用deque和list原创 2012-06-27 10:50:52 · 1464 阅读 · 0 评论 -
STL学习之map容器(3)
map::finditerator find ( const key_type& x );const iterator find( const key_type& x) const;获取元素的迭代器获取map容器中指定键值x的元素,如果找到,返回此元素的迭代器,否则返回map::end()的迭代器(即查找到容器的末尾都没有找到此元素)。前面章节介绍的map::count成原创 2012-06-24 10:32:25 · 8207 阅读 · 0 评论 -
STL学习之map容器(2)_insert
map::insertpair insert(const value_type& x); iterator insert(iterator position, const value_type& x);template void insert(InputIterator first, Input原创 2012-06-24 08:44:21 · 41255 阅读 · 0 评论 -
编码20年的老程序员分享所积累的20条编程经验(收藏)
本文转自Jonathan Danylko的网站DCS Media。Danylko是一位资深开发顾问,DCS公司的创始人。 从11岁时,我就一直在编程,并且一直都很喜欢技术和编程。这些年来,我积累了一些艰难又容易的经验。作为一名程序员,你或许还没这些经验,但我会把它们献给那些想从中学到更多的朋友。我会持续更新这些经验,我可能还会有更多的感想,但就我这20年来看,原创 2012-09-13 17:46:11 · 1860 阅读 · 0 评论 -
如何成为一个C++高级程序员(收藏)
C++这门语言从诞生到今天已经经历了将近30个年头。不可否认,它的学习难度都比其它语言较高。而它的学习难度,主要来自于它的复杂性。现在 C++ 的使用范围比以前已经少了很多,java、C#、python 等语言在很多方面已经可以代替C++。但是也有很多地方是其他语言完全无法替代的,主要集中在需要运行效率比较高的行业,比如游戏、高效的服务器。 现在学习 java、C#等语言的人数远远高于C++原创 2012-09-13 17:14:18 · 2478 阅读 · 4 评论 -
c++运算符优先级列表
下表列出了C ++运算符的优先级和结合性。操作符列出从上到下,降优先。优先级操作符描述结合性1::Scope resolutionLeft-to-right2++ --Suffix/postfix increment and decrement(如:i++)()Function call[]原创 2012-09-25 11:38:05 · 1380 阅读 · 0 评论 -
c++类防止被继承的一种方法
熟悉c++和java的人都知道,java中的类如果不想被继承,可以在类的前面加final关键字,这样这个类就不能被继承了,而c++中没有这个关键字,那如何防止一个类被继承呢?原创 2014-01-13 15:31:09 · 2808 阅读 · 0 评论 -
以对象方式看c++指针(一)
指针的类型(The Type of a Pointer) 一个指向ZooAnimal(一个类)的指针是如何与一个指向整形的指针或者指向template Array的指针有所不同? ZoolAnimal *px;int *pi;Array *pta; 以内存需求的观点来说,没有什么不同。以上三种类型都有足够的内存来放原创 2013-08-19 18:20:33 · 1729 阅读 · 1 评论 -
windows消息处理(强烈推荐,收藏)
由于看了一下,比较好理解,暂时先放到这里,待有空再翻译。只是在每节后大致介绍一下讲的内容。感觉写的比较全,无论从消息的原理还是从MFC操作上来说,值得一看,我也在此做个收藏。(一)说明:以下首先对消息进行介绍,然后在消息处理中,使用类向导创建消息循环,这个操作是在vc6.0(或者之下版本)操作的。翻译 2012-08-22 17:30:52 · 3432 阅读 · 0 评论 -
c++中 *& 和 **& 符号作用说明
在c++中,尤其是函数调用或者函数返回的时候,通常会遇到调用 引用(&) 或者返回 引用(&) 对象,更甚者函数调用 **(指针的指针),但是“*&”和“**&”却很少看到,到底代表什么意思呢?下面简单介绍一下。原创 2013-11-12 15:04:31 · 14522 阅读 · 2 评论 -
c++中对单链表操作代码
最近在看c++语法、c++基础之类的东西,未雨绸缪一下,为下一步作打算,今天看了一下单链表功能,就参照其他文章及方法,自己在机器上敲入,并整理、修正。明天如果有时间,则看看更复杂些的链表。原创 2013-11-26 15:26:28 · 1581 阅读 · 0 评论 -
c++中函数参数传递(值传递、指针传递,引用传递)进一步认识
今天想写一个函数,从函数中把我需要的两个值传出来,由于传出来的值比较多,所以不考虑用return来返回,需要通过参数把修改后的值拉出来供我使用,很当然的就想到了用指针,但是值就是传不出来;使我对原有的大脑中指针的思维产生混沌感,今天一上午才把函数传递又走了一遍,才明白其中。。。原创 2013-11-07 19:05:12 · 28284 阅读 · 3 评论 -
友元函数和友元类
友元函数和友元类 采用类的机制后实现了数据的隐藏与封装,类的数据成员一般定义为私有成员,成员函数一般定义为公有的,依此提供类与外界间的通信接口。但是,有时需要定义一些函数,这些函数不是类的一部分,但又需要频繁地访问类的数据成员,这时可以将这些函数定义为该函数的友元函数。除了友元函数外,还有友元类,两者统称为友元。友元的作用是提高了程序的运行效率(即减少了类型检查和安全性检原创 2013-09-16 22:44:22 · 1094 阅读 · 0 评论 -
c++多线程同步(1)
此篇讨论一下c++中的线程同步。线程同步方式: 临界区 事件 互斥量 信号量为什么要线程同步? 从之前的讨论及实际的项目中,可以看到线程同步给我们带来了很多便利性,但是多线程也同时给我们带来了很多麻烦:一方面,在开发调试阶段带来了很大的难度;另一方面,则需要考虑资源访问的一致性原则。因为在程序中使用多线程的时候,每一个线程并不会各行各事原创 2012-04-18 22:42:44 · 13579 阅读 · 4 评论 -
c++中虚函数和纯虚函数定义
只有用virtual声明类的成员函数,使之成为虚函数,不能将类外的普通函数声明为虚函数。因为虚函数的作用是允许在派生类中对基类的虚函数重新定义。所以虚函数只能用于类的继承层次结构中。 一个成员函数被声明为虚函数后,在同一类族中的类就不能再定义一个非virtual的但与该虚函数具有相同的参数(包括个数和类型)和函数返回值类型的同名函数。 根据什么考虑是否把一个成员原创 2013-07-01 17:43:10 · 7478 阅读 · 1 评论 -
C++的坑真的多吗?(摘自陈浩老师)——收藏
先说明一下,我不希望本文变成语言争论贴。希望下面的文章能让我们客观理性地了解C++这个语言。(另,我觉得技术争论不要停留在非黑即白的二元价值观上,这样争论无非就是比谁的嗓门大,比哪一方的观点强,毫无价值。我们应该多看看技术是怎么演进的,怎么取舍的。)事由周五的时候,我在我的微博上发了一个贴说了一下一个网友给我发来的C++程序的规范和内存管理写的不是很好(后来我删除了,因为当事人要求),我并原创 2012-11-19 23:07:30 · 4833 阅读 · 0 评论 -
STL学习之map容器(0)
map Map是一系列有一个键值(key)和映射值(value)组合的存储元素关联容器。 在一个map中,key值是唯一的确定一个元素,而映射值(value)是这个key相关的值的某个排序。键的类型和值的类型是不同的,例如,map的一个典型的实例----电话簿索引是以姓名作为key,以电话号码作为value的。 本质上,map中的元素是从低到原创 2012-06-22 21:30:03 · 3451 阅读 · 0 评论 -
STL学习之map容器(1)
map::mapexplicit map ( const Compare& comp = Compare(), const Allocator& = Allocator() );template map ( InputIterator first, InputIterator last, const Compare& comp =原创 2012-06-21 18:07:48 · 2236 阅读 · 0 评论 -
c++中消息函数(2)----GetMessage函数
此函数从调用线程的消息队列中取出一个消息。此函数发送消息队列的消息直到这个消息适合检索。然后把检索到的消息赋值给MSG结构体。 PeektMessage函数和GetMessage不同,PeekMessage不会等待一个消息发送到消息队列时才返回。BOOL GetMessage( LPMSGlpMsg, // message information H原创 2012-03-25 00:02:07 · 12526 阅读 · 0 评论 -
c++多线程(二)
多线程实例二此实例演示采用CreateThread函数在主线程中创建一个线程,并且向创建的线程中传递一个参数。由于采用MFC编程,自动生成的代码比较多,还是列出部分实现多线程的代码。线程函数:void ThreadProc(int count){ for (int i=0; i < count; i++) { Beep(2000,50); Sleep(200);原创 2012-04-10 23:12:39 · 8716 阅读 · 0 评论 -
c++中消息函数(1)
下面列出来c++中的消息函数,分别进行介绍:l BroadcastSystemMessage此函数发送消息给指定的接收者,接收者可以是应用程序、可安装的驱动、网络驱动、系统级别的设备驱动或者任何系统部件的组合。longBroadcastSystemMessage( DWORD dwFlags, // broadcast option LP原创 2012-03-22 22:23:49 · 3531 阅读 · 0 评论 -
c++共享内存操作实例
1、创建共享内存 HANDLE hMapping;LPTRANSDATA lpData; //要发送的结构体hMapping = CreateFileMapping(INVALID_HANDLE_VALUE,NULL,PAGE_READWRITE,0,1024,SHAREMEM_CMD_SEND);if (hMapping != NULL){lpDat原创 2012-03-21 22:42:41 · 14608 阅读 · 0 评论 -
指针与const限定符
const限定符和指针结合起来常见的情况有以下几种。(1)指向常量的指针const int *a; int const *a;这两种写法是一样的,a是一个指向const int型的指针,a所指向的内存单元不可改写,所以(*a)++是不允许的,但a可以改写,所以a++是允许的。指针指向的内容不变,但是指针本身是可以变的。(2)常指针int * co原创 2012-03-20 21:48:21 · 1660 阅读 · 0 评论 -
c&c++中的指针
曾经自己认为最熟悉的计算机语言是c语言,曾经那段刚入大学的第一个学期就学c语言的过程让我这个学计算机的人很难忘却。当时对计算机的了解仅限于聊QQ和上网的我们----20出头的年轻人们,学这个当时是认为最难的一门课程的时候,那中滋味也是很难忘却的! 我估计教我们c语言的杜老师应该是最无奈的,那个才华横溢的堂堂山东大学毕业的研究生,教我们这些几乎对语言一窍不通的人们,那种痛苦可想而知!仍然还原创 2012-03-20 21:46:37 · 2187 阅读 · 0 评论 -
STL学习(三)
迭代器技术 流和迭代器 理解的要点是将输入/输出流作为容器来看待。因此,任何接受迭代器参数的算法都可以和流一起工作。#include #include //包含rand()和srand() #include #include #include using namespace std;void Display(vector& v, const char* s)原创 2012-04-05 21:20:37 · 1637 阅读 · 0 评论 -
STL学习(二)
使用迭代器编程输入迭代器 输入迭代器只能读,并且是一次解析,只能向前移动。为输入迭代器预定义实现只有istream_iterator和istreambuf_iterator,用于从一个输入流中读取。 可以先看一下find()模板函数的定义:templateInputIterator find(InputIterator first,InputIt原创 2012-04-01 18:53:29 · 1181 阅读 · 0 评论 -
c++中Socket通信函数之WSAStartup
socket通信的整个过程:WSAStartup此函数在应用程序中初始化winsockDLLint WSAStartup( __in WORD wVersionRequested, __out LPWSADATA lpWSAData );wVersionRequested 调用原创 2012-03-26 16:37:44 · 12202 阅读 · 0 评论 -
STL学习(一)
STL概述 STL的一个重要的特点:数据结构和算法的分离。 为了避免和其他头文件冲突,STL的头文件中不再使用常规的.h扩展,例如包含string类、迭代器和算法: #include 表 1. STL头文件和容器类#includeContainer Class deque原创 2012-03-30 18:42:38 · 1516 阅读 · 0 评论 -
c++中消息函数(3)----PeekMessage和WaitMessage函数
l PeekMessage 此函数检查一个线程消息队列中消息,如果消息存在,放置消息到指定的MSG结构体中。BOOL PeekMessage( LPMSGlpMsg, HWND hWnd, UINT wMsgFilterMin, UINT wMsgFilterMax, UINT wRemoveMsg );lpMsg 指向从原创 2012-03-25 10:56:12 · 5342 阅读 · 0 评论 -
c++ 链接时出现错误
在做多线程的例子,编译时,一切ok,但是在build时候,出现 LIBCMTD.lib(wincrt0.obj) : error LNK2001: unresolved external symbol _WinMain@16 Debug/SampleTest.exe : fatal error LNK1120: 1 unresolved externals原创 2012-02-20 18:35:17 · 966 阅读 · 1 评论 -
c++多线程(四)
线程间通信主线程创建子线程必定会为主线程分担一部分工作,这样不可避免的会在这两个线程之间存在消息传递渠道,因此主线程和子线程之间要进行通信。 下面介绍几种通信方式:全局变量:由于同一进程的各个线程之间共享该进程的资源,因此,解决线程间通信最简单的方式是使用全局变量。对于标准类型的全局变量,使用validate修饰符,不让编译器对其优化,因为编译器如果对其优化,可能会原创 2012-04-11 23:23:02 · 8048 阅读 · 4 评论