C++
文章平均质量分 55
普通网友
这个作者很懒,什么都没留下…
展开
-
值得推荐的C/C++框架和库
【本文系外部转贴,原文地址:http://coolshell.info/c/c++/2014/12/13/c-open-project.htm】留作存档值得学习的C语言开源项目- 1. Webbench Webbench是一个在linux下使用的非常简单的网站压测工具。它使用fork()模拟多个客户端同时访问我们设定的URL,测试网站在压力下工作的性能,最多可以模拟转载 2016-07-23 10:56:24 · 15218 阅读 · 0 评论 -
C++虚函数的缺点
虚函数有什么缺点或者析构函数声明为虚函数有什么缺点?大体原因如下:如果某个类不包含虚函数,那一般是表示它将不作为一个基类来使用。当一个类不准备作为基类使用时,使析构函数为虚一般是个坏主意。因为它会为类增加一个虚函数表,对象增加一个虚指针,使得对象的体积增大。所以基本的一条是:无故的声明虚析构函数和永远不去声明一样是错误的。实际上,很多人这样总结:当且仅当类里包含至少一个虚函数的时候才去声明虚析构函数原创 2016-10-11 16:00:15 · 17387 阅读 · 0 评论 -
shared_ptr基于引用计数智能指针实现
智能指针是什么简单来说,智能指针是一个类,它对普通指针进行封装,使智能指针类对象具有普通指针类型一样的操作。具体而言,复制对象时,副本和原对象都指向同一存储区域,如果通过一个副本改变其所指的值,则通过另一对象访问的值也会改变.所不同的是,智能指针能够对内存进行进行自动管理,避免出现悬垂指针等情况。普通指针存在的问题C语言、C++语言没有自动内存回收机制,关于内存的操作的安全性依赖于程序员的自觉。程序转载 2016-10-11 20:25:27 · 15903 阅读 · 1 评论 -
C++11 override 和 final
类被final修饰,不能被继承class A1 final { };class B1 : A1 { }; // “B1”: 无法从“A1”继承,因为它已被声明为“final”final:在类中用final关键字声明一个成员函数(在函数的后面添加该关键字,就像const一样),则该函数不能再被继承。它的作用是拒绝重载。final限定的函数必须是虚函数。在父类中。class A1{ virt原创 2016-10-11 20:56:40 · 14642 阅读 · 0 评论 -
C++中advance的代码实现
template<typename IterT, typename DistT>void advance(IterT& iter, DistT d){ if(typeid(typenamestd::iterator_traits<IterT>::iterator_category) ==typeid(std::rand原创 2016-10-12 10:58:18 · 15556 阅读 · 0 评论 -
extern "c"用法解析
引言 C++保留了一部分过程式语言的特点,因而它可以定义不属于任何类的全局变量和函数。但是,C++毕竟是一种面向对象的程序设计语言,为了支持函数的重载,C++对全局函数的处理方式与C有明显的不同。 extern “C”的主要作用就是为了能够正确实现C++代码调用其他C语言代码。加上extern”C”后,会指示编译器这部分代码按C语言的进行编译,而不是C++的。由于C++支持函数重载,因此编译器编转载 2016-09-27 12:09:48 · 14218 阅读 · 0 评论 -
C++volatile关键字
遇到这个关键字声明的变量,编译器对访问该变量的代码就不再进行优化,从而可以提供对特殊地址的稳定访问。声明时语法:int volatile a; 或者volatile int a;当要求使用 volatile 声明的变量的值的时候,系统总是重新从它所在的内存读取数据,即使它前面的指令刚刚从该处读取过数据。而且读取的数据立刻被保存。一般说来,volatile 用在如下的几个地方: 1) 中断服务程序中原创 2016-09-27 20:45:44 · 488 阅读 · 0 评论 -
Effective C++专题总结
Effective C++原创 2016-09-28 00:30:45 · 14521 阅读 · 0 评论 -
C++笔试题目总结
class Base2{public: virtual void init() { cout << "Base2::init" << endl; } Base2() { init(); }};class Drived :public Base2{public: void init() {原创 2016-10-16 09:28:56 · 14510 阅读 · 0 评论 -
C++构造函数失败
什么函数都有可能失败,构造函数也不另外,比如new一个对象或空间不成功。当构造函数失败的时候,其实很多时候我们不想这个对象被继续生成,这个时候就可以在构造函数里面抛出异常。C++规定构造函数抛出异常之后,对象将不被创建,析构函数也不会被执行,但已经创建成功的部分(比如一个类成员变量)会被部分逆序析构,不会产生内存泄漏。但有些资源需要在抛出异常前自己清理掉,比如打开成功的一个文件,最好关闭掉再抛出异转载 2016-10-08 19:44:55 · 21901 阅读 · 0 评论 -
C++笔试总结
有多套完整python,人工智能,机器学习,马哥最新Linux运维,老男孩Linux运维,老男孩python全栈,老男孩python14期,传智播客C++,传智播客java教程,黑马安卓视频教程,得到音频所有专栏打包出售,有需要的加微信Wonder–G联系。(Wonder–G中的–是两个减号)1.计算机操作系统1.1shell执行机制shell内置命令exec有两个主要目的:(1)...原创 2016-08-13 02:01:57 · 17007 阅读 · 2 评论 -
开源C/C++网络库比较
转自:点击打开链接在开源的C/C++网络库中, 常用的就那么几个, 在业界知名度最高的, 应该是ACE了, 不过是个重量级的大家伙, 轻量级的有libevent, libev, 还有 Boost的ASIO。ACE是一个大型的中间件产品,代码20万行左右,过于宏大,一堆的设计模式,架构了一层又一层,使用的时候, 要根据情况,看你从那一层来进行使用。支持跨平台。Boos转载 2017-06-12 23:43:15 · 2222 阅读 · 0 评论 -
C++之RAII惯用法
C++中的RAII全称是“Resource acquisition is initialization”,直译为“资源获取就是初始化”。但是这翻译并没有显示出这个惯用法的真正内涵。RAII的好处在于它提供了一种资源自动管理的方式,当产生异常、回滚等现象时,RAII可以正确地释放掉资源。 举个常见的例子:void Func() { FILE *fp; char* filename转载 2016-10-10 17:40:03 · 14223 阅读 · 0 评论 -
为什么static数据成员一定要在类外初始化?
1、为什么静态成员不能在类内初始化? 在C++中,类的静态成员(static member)必须在类内声明,在类外初始化,像下面这样。class A { private: static int count ; // 类内声明 };int A::count = 0 ; // 类外初始化,不必再加static关键字为什么?因为静态成员属于整个类,而不属于某个对象,如果在类内初始化,会导原创 2016-09-21 00:30:50 · 24950 阅读 · 2 评论 -
c++ fstream中seekg()和seekp()的用法
转载http://blog.sina.com.cn/s/blog_679f85d40100mysi.html先说一下C语言中fseek()的功能:函数原型:int fseek(FILE *fp, LONG offset, int origin)参数含义:fp 文件指针 offset 相对于origin规定的偏移位置量 origin 指针移动的起始位置,可设置为以下三种情况: SEE转载 2016-07-28 20:47:43 · 60439 阅读 · 3 评论 -
C++模板中typename和class的区别
template与template一般情况下这两个通用,但有一个特例,就是当 T 是一个类,而这个类又有子类(假设名为 innerClass) 时,应该用 template:typename T::innerClass myInnerObject;这里的 typename 告诉编译器,T::innerClass 是一个类,程序要声明一个 T::innerClass 类的对象,而不是声明原创 2016-07-30 16:32:05 · 21224 阅读 · 2 评论 -
C++的try_catch异常
大部分内容转自:http://blog.csdn.net/codestinity/article/details/6877581一、简单的例子首先通过一个简单的例子来熟悉C++ 的 try/catch/throw:#include //包含头文件#includedouble fuc(doub转载 2016-07-30 11:43:54 · 14919 阅读 · 2 评论 -
学习c/c++的50个好网站
原:http://blog.chinaunix.net/uid-20548989-id-2979724.html1、http://snippets.dzone.com/tag/c/ --数以千计的有用的C语言源代码片段 2、http://www.hotscripts.com/category/c-cpp/scripts-programs/ Hotscripts --提供数以百计的C和C转载 2016-07-23 10:44:34 · 25621 阅读 · 2 评论 -
C++win32、win64、linux32、linux64中各数据类型占字节数
Legend: Standard behavior Standard and a grateful surprise: other compilers/platforms fail Standard but be careful: different from everywhere else Unexpected: pr原创 2016-08-09 16:39:26 · 16047 阅读 · 0 评论 -
map 和 hash_map 的使用方法
STL map常用操作简介1。目录map简介map的功能使用map在map中插入元素查找并获取map中的元素从map中删除元素2。map简介map是一类关联式容器。它的特点是增加和删除节点对迭代器的影响很小,除了那个操作节点,对其他的节点都没有什么影响。对于迭代器来说,可以修改实值,而不能修改key。3。map的功能转载 2016-09-05 17:51:49 · 15606 阅读 · 0 评论 -
C++用模板实现栈
#ifndef _CStack #define _CStack #include<iostream.h> template<class T>class CStack{ // LIFO 对象 public: CStack(int MaxStackSize = 10); ~CStack() { delete[] stack; } bool IsEmpty转载 2016-09-18 10:30:44 · 14394 阅读 · 0 评论 -
static_cast, dynamic_cast, reinterpret_cast, const_cast区别比较
原:http://www.cnblogs.com/jerry19880126/archive/2012/08/14/2638192.html隐式转换(implicit conversion)short a=2000;int b;b=a;short是两字节,int是四字节,由short型转成int型是宽化转换(bit位数增多),编译器没有warning,如下图转载 2016-09-07 00:52:04 · 14110 阅读 · 0 评论 -
C++中哪些运算符不可重载
几乎所有的运算符都可用作重载。具体包含: 算术运算符:+,-,*,/,%,++,–; 位操作运算符:&,|,~,^,<<,>> 逻辑运算符:!,&&,||; 比较运算符:<,>,>=,<=,==,!=; 赋值运算符:=,+=,-=,*=,/=,%=,&=,|=,^=,<<=,>>=; 其他运算符:[],(),->,,(逗号运算符),new,原创 2016-09-07 09:40:30 · 36508 阅读 · 2 评论 -
面向对象的基本原则
一、单一职责原则: 全称:“Single-Responsibility Principle” 说明:就一个类而言,应该只专注于做一件事和仅有一个引起它变化的原因。所谓职责,我们可以理解他为功能,就是设计的这个类功能应该只有一个,而不是两个或更多。也可以理解为引用变化的原因,当你发现有两个变化会要求我们修改这个类,那么你就要考虑撤分这个类了。因为职责是变化的一个轴线,当需求变化时,该变化会反映类的转载 2016-09-20 17:28:03 · 14145 阅读 · 0 评论 -
C++ int float double类型的数据大小端转化
以下代码抄自《网络多人游戏架构与编程》,可以支持float、int、double等数据类型数据的大小端转换,测试代码为:void TestByteSwap(){ int32_t test = 0x12345678; float floatTest = 1.f; printf( "swapped 0x%x is 0x%x\n", test, ByteSwap( test ) ); pr...原创 2018-07-08 20:45:54 · 3666 阅读 · 0 评论