C++
xokai
这个作者很懒,什么都没留下…
展开
-
一种c++单例嵌套导致的栈溢出问题
单例嵌套导致栈溢出问题源代码#include "Singleton.h"#include <iostream>using namespace std;using namespace Loki;class CA{ CA(){ Init(); } void Init() { cout << cbInstance::instance().GetPath...原创 2020-04-09 12:41:09 · 403 阅读 · 0 评论 -
C++ typename的起源与用法
转载原文链接:http://feihu.me/blog/2014/the-origin-and-usage-of-typename/原文作者很好的解释了typename的用法,下面是拷贝过来的原文。侯捷在Effective C++的中文版译序中提到:C++的难学,还在于它提供了四种不同(但相辅相成)的程序设计思维模式:procedural-based, object-based, ob...转载 2019-12-20 07:14:41 · 161 阅读 · 0 评论 -
c++求值顺序的重要性
说明文章中红色下划线字体表示我认为比较重要的知识点。内容优先级规定了运算对象的组合方式,但是没有说明运算对象按照什么样的顺序求值。在大多数情况下,不会明确指定求值的顺序,对于如下表达式:int i = f1() * f2()。//想象如果f1和f2都引用了一个全局对象,并对其进行了相应的操作,那么将会引发灾难。我们知道f1和f2一定会在执行乘法之前被调用,因为毕竟相乘的是两个函...原创 2019-01-11 15:01:56 · 336 阅读 · 0 评论 -
c++随机数
随机数函数介绍:srand():srand()用来设置rand()产生随机数时的随机数种子,参数seed必须是整数,通常可以用time(0)的返回值作为seed.对srand的调用最终会修改静态全局变量holdrand(参见下面的c库程序),由此可知srand的范围是当前进程,所以如果不想改变种子,只需要只需要在main函数中调用后其他地方就不需要调用了。通常用法:srand(unsi...原创 2018-07-31 16:06:11 · 422 阅读 · 0 评论 -
ubuntu 查看 查看 c++ 库函数
sudo apt-get install manpages-dev glibc-docsudo apt-get install libstdc++6-4.4-doc原创 2017-11-02 06:41:50 · 1913 阅读 · 0 评论 -
undefined reference to `typeinfo for IA' collect2: ld returned 1 exit status
背景:c++工程,虚函数,继承,接口,代码如下:class IA{public: virtual void printa();};class CA:public IA{public: CA(int a){ this->a = a; } ~CA(){}public: void printa() { printf ("a=%d\n", a); } private原创 2015-11-04 10:27:38 · 1065 阅读 · 0 评论 -
c++、java CRC16算法
c++代码int get_crc16 (unsigned char *bufData, unsigned int buflen, unsigned char *pcrc){ int ret = 0; unsigned short CRC = 0xffff; unsigned short POLYNOMIAL = 0xa001; int i, j; if(bufData == N原创 2014-03-21 13:12:52 · 9288 阅读 · 5 评论 -
数据类型不匹配引起的bug
源代码如下:char checkSum(char fn, char *pcontent, unsigned int contentLen){char checksum=0, i;char tmp[3]={0};sprintf(tmp, "%02X", (BYTE)fn);checksum=tmp[0]+tmp[1];for(i=0;i{check原创 2014-03-06 13:37:38 · 2881 阅读 · 0 评论 -
mfc sprintf引发的内存溢出
程序代码:char testc=0xf1;char testbuf[3]={0};sprintf(testbuf, "%02X", testc);上面代码咋看是没有问题的或者你简单运行这样一段小程序不会出错,但是在一个大的工程中会引发内存溢出。比如出现:CString Run-Time Check Failure #2 - Stack around the variable '原创 2014-03-05 17:29:27 · 2479 阅读 · 0 评论 -
c/c++在windows下获取时间和计算时间差的几种方法总结
文章来自:http://blog.csdn.net/coder_xia/article/details/6566708一、标准C和C++都可用1、获取时间用time_t time( time_t * timer ),计算时间差使用double difftime( time_t timer1, time_t timer0 )。 精确到秒。测试程序如下:[c-sharp]转载 2014-02-18 18:03:57 · 781 阅读 · 0 评论 -
将 Win32 程序移植到 Linux
文章来自:http://blog.sina.com.cn/s/blog_52514e730100zr12.html将 Win32 程序移植到 Linux对于这个问题,网上已经有很多资料给予了介绍,但是相比于这些信息,本文立足于个人的实践,将内容具体到开发环境和源代码,我觉得还是有很多值得总结和借鉴的。首先声明开发环境。Win32程序的开发环境是VS.Net 2008,编程语言是C;Li转载 2014-01-24 14:21:39 · 771 阅读 · 0 评论 -
c++常用函数之 十六进制字符串转换为十进制
#include #include #include using namespace std;int HexToDec(const string str,int& n){if (str.empty()){return 1;//字符串为空}if (str.length()>8){return 2;//超出范围}char* pc = new char原创 2013-06-26 16:19:54 · 6956 阅读 · 0 评论 -
memset函数使用详解
1。void *memset(void *s,int c,size_t n)总的作用:将已开辟内存空间 s 的首 n 个字节的值设为值 c。2。例子#includevoid main(){char *s="Golden Global View";clrscr();memset(s,'G',6);printf("%s",s);getchar()转载 2013-06-26 14:17:38 · 595 阅读 · 0 评论 -
变量声明和定义的区别
变量声明和定义的区别我们在程序设计中,时时刻刻都用到变量的定义和变量的声明,可有些时候我们对这个概念不是很清楚,知道它是怎么用,但却不知是怎么一会事,下面我就简单的把他们的区别介绍如下:(望我的指点对你受益)变量的声明有两种情况:1、一种是需要建立存储空间的。例如:int a 在声明的时候就已经建立了存储空间。2、另一种是不需要建立存储空间的。 例如:extern in转载 2013-06-20 16:30:05 · 725 阅读 · 0 评论 -
string类的方法
string类的构造函数:string(const char *s); //用c字符串s初始化string(int n,char c); //用n个字符c初始化此外,string类还支持默认构造函数和复制构造函数,如string s1;string s2="hello";都是正确的写法。当构造的string太长而无法表达时会抛出length_error异常string类转载 2013-05-30 09:38:29 · 613 阅读 · 0 评论 -
C++开发必看 四种强制类型转换的总结
C风格的强制类型转换(Type Cast)很简单,不管什么类型的转换统统是: TYPE b = (TYPE)a C++风格的类型转换提供了4种类型转换操作符来应对不同场合的应用。 const_cast,字面上理解就是去const属性。 static_cast,命名上理解是静态类型转换。如int转换成char。 dynamic_cast,命名上理转载 2013-05-30 10:35:12 · 531 阅读 · 0 评论 -
VC++内存申请
问题:如果要申请一块内存?应该如何做? 解答:在Vc++一般的做法是: LPVOID pvData;//声明一个任何类型的指针 DWORD dwFileSize;//申请内存的大小 //分配全局的可移动的内存 HGLOBAL hGlobal=GlobalAllo转载 2013-05-24 08:47:16 · 3098 阅读 · 0 评论