c++
文章平均质量分 70
hujingLiu
这个作者很懒,什么都没留下…
展开
-
C函数传递二维数组
方法一:#include #include #define M 3#define N 4 int get(int** a, int i, int j){ return *((int*)a+i*N+j); } int main() { int a[M][N] = {{1,2,3,4},{5,6,7,8},{9,10,11,12}}; int v;原创 2014-04-09 22:27:31 · 1071 阅读 · 0 评论 -
leetcode -- Largest Number
原题:Given a list of non negative integers, arrange them such that they form the largest number.For example, given [3, 30, 34, 5, 9], the largest formed number is 9534330.Note: The result ma原创 2015-02-21 21:04:18 · 858 阅读 · 0 评论 -
dynamic_cast的使用条件
今天从学长那里听来一道腾讯的面试题,问的是C++中的dynamic_cast在什么情况下是错误的?我认为这个问题的更好的描述是dynamic_cast的使用条件是什么?C++提供了两种方式来支持RTTI,dynamic_cast是其中一种,另一种是typeid()。表面上看,dynamic_cast有两种形式:Base *pBase = new Base();Derived *pDer原创 2014-09-17 22:41:20 · 2892 阅读 · 0 评论 -
关于size_type
由string类类型和vector类类型定义的类型,用以保存任意string对象或vector对象的长度,标准库类型将size_type定义为unsigned类型.string::size_type它在不同的机器上,长度是可以不同的,并非固定的长度。但只要你使用了这个类型,就使得你的程序适合这个机器。与实际机器匹配。string::size_type从本质上来说,是一个整型数。关键是由原创 2015-02-28 10:23:56 · 1042 阅读 · 0 评论 -
VS2012开发的项目移植到WinXP下
最近要将一个项目移植到xp下,但在xp下运行exe文件后,总是报错说XXX.exe is not a valid win32 application。但输出的的确是win32 release版本的exe。解决办法如下:1、安装VS2012 update 12、安装VS2012 update 43、重启VS,打开项目,右键项目->properties->Configuration P原创 2015-03-03 10:29:21 · 1225 阅读 · 0 评论 -
关于VC预定义常量_WIN32,WIN32,_WIN64
VC2012 下写 Windows 程序时,有时需要判断编译环境。在之前的文章《判断程序是否运行在 Windows x64 系统下。》里说过如何在运行期间判断系统环境,但在编译时如何判断? MSDN 里说,VC 有 3 个预处理常量,分别是 _WIN32,_WIN64,WIN32。这三个常量如何使用呢?看起来简单,其实是很困惑的。 在 Win32 配置下转载 2015-03-08 22:18:33 · 5309 阅读 · 0 评论 -
Socket send函数和recv函数详解
1.send 函数int send( SOCKET s, const char FAR *buf, int len, int flags ); 不论是客户还是服务器应用程序都用send函数来向TCP连接的另一端发送数据。客户程序一般用send函数向服务器发送请求,而服务器则通常用send函数来向客户程序发送应答。 该函数的第一个参数指定发送端套接转载 2015-03-11 21:27:40 · 1481 阅读 · 0 评论 -
派生类的指针绑定到基类的对象(编译通过,但结果不可预知)
多态是面向对象中最重要的特性。在C++中多态的实现是通过带有虚函数的基类的指针或引用绑定到派生类的对象上来体现的。如果反过来,派生类的指针或引用绑定到积累的对象上有会有什么结果呢?首先这种做法很可能是没有实际意义的,但是编译却能通过(至少在VS2012下能过)。下面通过一个例子来看看运行结果:class base {public: base(int x) : a(x) {} virt原创 2015-04-06 14:28:37 · 930 阅读 · 0 评论 -
C++字符串拷贝与缓冲区溢出
对于常用的字符串拷贝函数,常用的有:Ansi版本如下:strcpy, strncpy, strcpy_s, strncpy_s, StringCbCopyUnicode版本为:wcscpy,wcsncpy,wcsncpy_s,wcsncpy_s,StringCbCopyW其中最后一个为Windows的API,其余为c运行时函数。这些函数完成的功能是一转载 2015-04-11 16:23:11 · 4280 阅读 · 0 评论 -
虚函数和虚基类混合的情况
class A {public: char k[3]; virtual void aa() {}};class B0 : public A {public: char j[3]; virtual void aa() {}};class B1 : public A {public: char j[3]; virtual void aa() {} virtual vo原创 2015-04-06 17:07:41 · 589 阅读 · 0 评论 -
在 C/C++ 语言中特定的宏
原文地址:http://blog.csdn.net/dafan/article/details/5781491__FILE____LINE____DATE____TIME____FUNC__ __FUNCTION__ 在Visual Studio 2005中,默认情况下,此特性是激活的,但不能与/EP和/P编译选项同时使用。请注意在转载 2015-04-24 10:53:27 · 507 阅读 · 0 评论 -
C++实现单例模式
单例是一种重要的设计模式,其mud原创 2014-04-24 23:08:49 · 888 阅读 · 0 评论 -
C++11对多线程的支持
最近,一位学长面试阿里,原创 2014-04-16 14:35:13 · 1076 阅读 · 0 评论 -
GDB No symbol "XXXXX" in current context
这几天在把windows下的工程移植到centOS下的时候,发现gcc编译不过,有三点原因:1、gcc相比VS,对C++标准的遵循更为严格,有些不符合标准的写法在VS下能过,但在gcc下则报错。比如:在头文件中声明类A的成员函数时,gcc下不能带有A::,又如初始化fstream时,gcc下第一个参数必须是const char *,而不能是string等等;2、由于centOS已有的gcc原创 2015-05-30 18:42:15 · 6916 阅读 · 0 评论 -
vector排序问题<unresolved overloaded function type>
要对vector中的自定义类型进行排序,首先需要提供一个函数bool comp(const Interval & a, const Interval & b) 来定义类型的排序准则 然后调用std::sort(intervals.begin(),intervals.end(),comp) 写了几个小的测试用例也都通过了,但是当集成在类中的时候编译遇到问题,Line 30: no ma转载 2015-06-08 11:31:10 · 2621 阅读 · 1 评论 -
extern和static修饰全局变量的区别
extern static修饰全局变量的区别原创 2014-09-29 13:42:04 · 9407 阅读 · 1 评论 -
STL的hashtable默认支持的模板类型
《STL源码剖析》的5.7.7 hash function一节中介绍了中定义了数个现成的hash函数,全都是仿函数。这些hash函数支持的模板类型包括:char*, const char*, char, unsigned char, signed char, short, unsigned short, int , unsigned int, long, unsigned long。这些不同类型的原创 2015-04-26 11:46:06 · 866 阅读 · 0 评论 -
C++ Boost 学习资源列表
文档书籍下载Boost DocumentationBoost代码下载 优秀网站导航Boost官方网站Boost中文站Boost Consulting 专题资源报告Linux伊甸园- STL/boost专区CSDN-Boost系列专题 个人博客推荐转载 2015-02-09 10:16:21 · 968 阅读 · 0 评论 -
不要随意混用string和C风格字符串
最近在参与一个前人做了一半的项目,可能是由于之前开发人员并不固定,大家的编码风格不同,本来是个C++的项目,里面却出现了C和C++风格混乱的代码。这里并不是说C和C++熟优熟劣,而是觉得实际项目中应该选定一种编码风格,如果是用C,那就坚持用C,如果选择了C++,那就坚持C++的封装原则。不应该一会C++的风格,一会又是C的风格。 也许大家会说C++本来就是兼容C的,有什么不可呢?我原创 2014-12-27 19:04:32 · 1667 阅读 · 0 评论 -
VS中各种C运行时库的区别
各种C运行时库的区别 编译器链接选项: Visual C++编译时到底哪个C运行时库联入程序取决于编译选项,选项告诉编译器应用程序想使用什么版本的C标准程序库。与标准程序库有关的选项:/ML、/MLd、/MT、/MTd、/MD、/MDd /ML对应单线程静态版的标准程序库(libc.lib);/MT对应多线程静态版标准库(libcmt.lib转载 2015-02-05 14:11:31 · 3257 阅读 · 0 评论 -
多重继承和虚继承
这两个概念一般只会在大的项目才会遇到,原创 2014-04-26 22:17:47 · 699 阅读 · 0 评论 -
memset的局限
memset包含在C的头文件string.h中,主要用在将一段内存初始化为某个值。如下:int a[100];memset()原创 2014-05-06 23:30:33 · 821 阅读 · 0 评论 -
借助虚继承来实现不允许继承的类
虚继承中有这样一个规定:如果虚基类中没有可用的默认构造函数,那么在虚继承体系中,虚基类必须由最低层的派生类显示的初始化。见下例:A是虚基类,B和C都虚继承了A,最低层的类C同时继承B和C。class A{ //虚基类public: //A():amem(0){ } 不提供可使用的默认构造函数 A(int x):amem(x){ } int amem;原创 2014-05-27 22:57:14 · 756 阅读 · 0 评论 -
RC4加密算法的原理及实现
RC4于1987年提出,和DES算法一样,是一种对称加密算法,也就是说使用的密钥为单钥(或称为私钥)。但不同于DES的是,RC4不是对明文进行分组处理,而是字节流的方式依次加密明文中的每一个字节,解密的时候也是依次对密文中的每一个字节进行解密。 RC4算法的特点是算法简单,运行速度快,而且密钥长度是可变的,可变范围为1-256字节(8-2048比特),在如今技术支持的前提下,当密钥原创 2014-07-09 15:57:29 · 67411 阅读 · 4 评论 -
C++ string类的隐式共享写时拷贝的实现及设计要点
字符串一种在程序中经常要使用到的数据结构,然而在C中却没有字符串这种类型。在C++中,为了方便字符串的使用,在STL中提供了一个string类。该类维护一个char指针,并封装和提供各种的字符串操作。一、为什么要实现隐式公享写时拷贝试想一下,如果我们要自己实现一个string类,最简单的方式是什么?就是让每一个string类的实例维护一个在内存中独立的字符数组,每个st转载 2014-09-13 20:59:48 · 856 阅读 · 1 评论 -
placement new和placement delete
在第五版的《C++ primer》中,定位new原创 2014-06-10 14:42:52 · 1475 阅读 · 2 评论 -
C++ RTTI
原文地址:一、定义:RTTI:Run Time Type Identification ,运行时类型识别:指程序能够使用基类的指针或引用来检索其所指对象的实际派生类型。二、使用方式:C++中有两个操作符提供RTTI:(1)typeid 操作符:返回指针或引用所指对象的实际类型。(2)dynamic_cast 操作符:将基类类型的指针或引用安全地转换为派生类型的指针和引用。 注:此二操作转载 2014-09-14 22:15:18 · 729 阅读 · 0 评论 -
sizeof(class)
本文标题的形式显然是非正规化的,意在说明对一个类原创 2014-06-13 00:01:05 · 1193 阅读 · 2 评论 -
LIB和DLL的区别与使用
LIB和DLL的区别与使用原文地址:http://www.cppblog.com/amazon/archive/2009/09/04/95318.html 共有两种库:一种是LIB包含了函数所在的DLL文件和文件中函数位置的信息(入口),代码由运行时加载在进程空间中的DLL提供,称为动态链接库dynamic link library。一种是LIB包含函数代码本身,在编译转载 2014-10-21 20:22:28 · 581 阅读 · 0 评论 -
解释:《深度探索C++对象模型》对NRV优化的讨论
原文地址:http://blog.csdn.net/zha_1525515/article/details/7170059感谢作者!大纲: 函数返回局部对象的拷贝的一般实现方式。 NRV(Named Return Value)优化。 NRV优化触发的疑问。一、函数返回局部对象的拷贝的一般实现方式比如有这么一段函数定义:转载 2014-11-10 21:52:24 · 2005 阅读 · 0 评论 -
C++中的可调用对象
之前对C++中的多种可调用对象的使用总感觉很模糊,今天重新翻看了一下,总结成文如下。 C++中有如下几种可调用对象:函数、函数指针、lambda表达式、bind对象、函数对象。其中lambda表达式和bind对象是C++11标准中提出的(bind机制并不是新标准中首次提出,而是对旧版本中bind1st和原创 2014-03-14 20:40:27 · 3888 阅读 · 0 评论 -
C++标准转换运算符const_cast
原文地址:http://www.cnblogs.com/ider/archive/2011/07/22/cpp_cast_operator_part2.html前面讲了C++继承并扩展C语言的传统类型转换方式,最后留下了一些关于指针和引用上的转换问题,没有做详细地讲述。C++相比于C是一门面向对象的语言,面向对象最大的特点之一就是具有“多态性(Polymorphism)”。要想很好的使转载 2014-12-17 17:44:04 · 580 阅读 · 0 评论 -
visual studio 2012下的配置记录
最近做的windows下的项目涉及到对VS的一些零散配置,记录如下:1、要让vs2012下创建的工程支持winXP,需要下载update 3或以上的更新包。安装完后,在properties->configuration properties->general->platform tools下选择Visual Studio 2012 - Windows XP (v110_xp),这样输出的可执行原创 2015-01-09 16:37:21 · 883 阅读 · 0 评论 -
ANSI编码和Linux下的mbtowc
原文地址:http://blog.sina.com.cn/s/blog_4723adba0100hnb4.html本文阐述了在linux下使用标准C库函数mbtowc进行多字节和宽字节转化的方法,以及一些诡异的转化错误的产生原因及解决方法。 一、ANSI编码简述“ANSI编码”不同于ANSI(American National Standards I转载 2014-12-22 22:31:29 · 3207 阅读 · 1 评论 -
运行时找不到.so文件
在路径/home/mike/testlib/下有一个mylib.c文件和mylib.h文件,用如下命名制作为共享库(.so文件):g++ -c mylib.c -fPIC -o mylib.og++ mylib.o -shared -o mylib.so编译通过。在路径/home/mike/test/下有一个test.c文件要使用mylib.so,先将mylib.so文原创 2014-12-25 11:14:59 · 3778 阅读 · 0 评论 -
关于常量传播(如何修改const常量的值)
关于常量折叠今天在回顾C++的const_cast的时候无意写了这样一段代码:#includeusing namespace std;int main(){ const int i=100; int *p=const_cast(&i); (*p)++; cout<<p<<" "<<&i<<endl; cout<<*p<<" "<<i<<endl;}运行结果如下:0x22f原创 2014-03-12 20:51:48 · 3011 阅读 · 1 评论 -
linux下动态链接库(.so)的显式调用和隐式调用
进入主题前,先看看两点预备知识。一、显示调用和隐式调用的区别 我们知道,动态库相比静态库的区别是:静态库是编译时就加载到可执行文件中的,而动态库是在程序运行时完成加载的,所以使用动态库的程序的体积要比使用静态库程序的体积小,并且使用动态库的程序在运行时必须依赖所使用的动态库文件(.so文件),而使用静态库的程序一旦编译好,就不再需要依赖的静态库文件了(.a文件)。原创 2015-02-04 17:25:31 · 26998 阅读 · 3 评论 -
C++虚继承的实现方式与内存布局
虚基类表中存放了虚基类的成员在派生类内存空间中的偏移量......原创 2014-11-13 17:58:18 · 2360 阅读 · 0 评论