
c/c++
文章平均质量分 70
扎扎实实写代码
勤勤恳恳打基础,扎扎实实写代码!
展开
-
c++:函数传指针(void * xx)、传引用(void & xx)和传指针的引用(void *& xx)
1。函数的形参是指针类型void func(int * arg) void func(int * arg) { *arg = 15; } main() { int * p; *p =12; func(p); printf(“%d’,*p); } 函数原创 2016-07-06 11:15:13 · 6051 阅读 · 0 评论 -
C++中std::tr1::function和bind 组件的使用
[zz]C++中std::tr1::function和bind 组件的使用 - zaleilynn - 博客园 zaleilynn 博客园首页新随笔联系订阅管理 随笔 - 442 文章 - 0 评论 - 12 </div><!--end: blogStats --></di转载 2016-12-31 16:12:58 · 797 阅读 · 2 评论 -
c++:_attribute_ 使用:
GNU C的一大特色(却不被初学者所知)就是attribute机制。attribute可以设置函数属性(Function Attribute)、变量属性(Variable Attribute)和类型属性(Type Attribute)。 attribute书写特征是:attribute前后都有两个下划线,并切后面会紧跟一对原括弧,括弧里面是相应的attribute参数。 attribut原创 2017-02-13 15:17:18 · 11347 阅读 · 2 评论 -
linux-编译和添加库和头文件路劲
一、创建动态库和静态库 从源代码到可执行程序,通常要经过最重要的两大步是:编译,链接。编译就是将源文件生成中间文件的过程,在linux下就是生成 .obj 文件。链接就是用链接器将,这些个中间文件有序地”糅合“在一起,构成一个可执行文件。通常,一个.c文件或者.cpp源文件编译后,就会对应生成一个.obj文件。 那么库文件是什么东西呢?其实库文件就是将这些中间文件.obj进原创 2017-03-05 16:44:38 · 2093 阅读 · 0 评论 -
muduo-源码分析(前言0)
前言0 个人高性能、高并发linux服务器端编程(网络编程)比较感兴趣,自己写过一些简单的tcp通信程序,用进程池实现简单CGI服务器,用线程池实现简单web服务器。熟悉c++编程语言,但是没有用c++参与过一个项目,所以想寻找一个开源项目,用c++自己实现一个相对完整的网络库,所以选择了muduo开源网络库作为学习的第一个系统。因为他的代码量比较小,书中提到了如何借助现成库来发挥C++的原创 2017-04-11 15:41:15 · 471 阅读 · 0 评论 -
muduo-源码分析 1:基础概念准备
一 网络模型-Reactor模式 1.什么是reator模式 Wikipedia上说:“The reactor design pattern is an event handling pattern for handling service requests delivered concurrently by one or more inputs. The service handler原创 2017-04-11 16:04:44 · 785 阅读 · 0 评论 -
muduo源码分析2:整体框架
muduo简化类图: Channel 是selectable IO channel,负责注册与响应IO 事件,注意它不拥有file descriptor。它是Acceptor、Connector、EventLoop、TimerQueue、TcpConnection 的成员,生命期由后者控制。 Socket 是一个RAII handle,封装一个file descriptor,并在析构原创 2017-04-11 16:16:37 · 595 阅读 · 0 评论 -
c++-静态成员函数和非静态成员函数的区别
1.virtual与静态函数 C++中,静态成员函数不能被声明为virtual函数。 例如,下面的程序会编译失败。#include<iostream> class Test { public: // 编译错误:static成员函数不能声明为virtual virtual static void fun() { } }; 同样地,静态原创 2017-04-05 10:28:07 · 8758 阅读 · 0 评论 -
c++--静态成员变量
1.引言 对象的内存中包含了成员变量,不同的对象占用不同的内存,这使得不同对象的成员变量相互独立,它们的值不受其他对象的影响。例如有两个相同类型的对象 a、b,它们都有一个成员变量 m_name,那么修改 a.m_name 的值不会影响 b.m_name 的值。 可是有时候我们希望在多个对象之间共享数据,对象 a 改变了某份数据后对象 b 可以检测到。共享数据的典型使用场景是计数,以Studen原创 2017-04-05 10:51:46 · 420 阅读 · 0 评论 -
c++--Singleton单例模式的实现
1.线程安全的懒汉单例模式 懒汉式的特点是延迟加载,比如配置文件,采用懒汉式的方法,顾名思义,懒汉么,很懒的,配置文件的实例直到用到的时候才会加载。。。。。。class Singleton{public: static Singleton& GetInstance(void) { if(m_instance == nullptr) //双重check,实现多线程原创 2017-04-05 16:25:43 · 1129 阅读 · 0 评论 -
c++-头文件编译
转自:http://blog.youkuaiyun.com/walker19900515/article/details/46442777 一、C++编译模式通常,在一个C++程序中,只包含两类文件——.cpp文件和.h文件。其中,.cpp文件被称作C++源文件,里面放的都是C++的源代码;而.h文件则被称作C++头文件,里面放的也是C++的源代码。C+ +语言支持“分别编译”(separate compil转载 2017-05-04 13:40:20 · 896 阅读 · 0 评论 -
智能指针boost::weak_ptr 详解
1、boost::weak_ptr简介 boost::weak_ptr属于boost库,定义在namespace boost中,包含头文件 #include<boost/weak_ptr.hpp>便可以使用。 2、boost::weak_ptr详解 智能指针boost::scope_ptr和智能指针boost::shared_ptr就完全可以解决所有单个对象内存的管理问题。 这儿咋还多出一个原创 2017-06-12 10:14:19 · 774 阅读 · 0 评论 -
C++中tr1::function和bind 组件的使用
摘自:http://www.cnblogs.com/zhangzhang/archive/2012/03/21/2409164.html为什么要使用? 它们可以实现类似函数指针的功能,却比函数指针更加灵活(体现在占位符上面),尤其是在很多成员调用同一个函数(仅仅是参数类型不同)的时候比较方便 这个是函数指针做不到的要注意的地方: 使用的时候一定要注意指向的是没有this指针的函数(全局函数或静态成转载 2016-12-31 16:08:26 · 666 阅读 · 2 评论 -
C++构造函数/复制构造函数(超容易理解版)
构造函数是干什么的 该类对象被创建时,编译系统对象分配内存空间,并自动调用该构造函数,由构造函数完成成员的初始化工作,故:构造函数的作用:初始化对象的数据成员。 构造函数的种类: 1,一般构造函数(也称重载构造函数) 2, 复制构造函数(也称为拷贝构造函数) 3,类型转换构造函数,根据一个指定的类型的对象创建一个本类的对象 class Complex { priv转载 2016-12-20 16:13:58 · 460 阅读 · 0 评论 -
**c++ stl 顺序容器: begin(),end()和front(),back()区别和使用**
c++ stl 顺序容器: begin(),end()和front(),back()区别和使用0. begin(),end()和front(),back()函数的原型 begin函数: 函数原型: iterator begin(); const_iterator begin(); 功能: 返回一个当前vector容器中起始元素的迭代器。end函数: 函数原型: iterator en原创 2016-09-26 10:47:23 · 10299 阅读 · 2 评论 -
回车和换行在不同操作系统的应用
'\r'是回车,前者使光标到行首,(carriage return)'\n'是换行,后者使光标下移一格,(line feed)\r 是回车,return\n 是换行,newline对于换行这个动作,unix下一般只有一个0x0A表示换行("\n"),windows下一般都是0x0D和0x0A两个字符("\r\n"),苹果机(MAC OS系统)则采用回车符CR表示下一行(\r)Unix转载 2016-10-17 09:54:42 · 1919 阅读 · 0 评论 -
tinyhttpd 学习笔记
参考文档:http://blog.youkuaiyun.com/jcjc918/article/details/42129311 0.简介:tinyhttpd 是一个不到 500 行的超轻量型 Http Server,用来学习非常不错,可以帮助我们真正理解服务器程序的本质。 看完所有源码,真的感觉有很大收获,无论是 unix 的编程,还是 GET/POST 的 Web 处理流程,都清晰了不少。废转载 2016-10-15 14:53:58 · 1024 阅读 · 0 评论 -
C++编译期多态与运行期多态
今日的C++不再是个单纯的“带类的C”语言,它已经发展成为一个多种次语言所组成的语言集合,其中泛型编程与基于它的STL是C++发展中最为出彩的那部分。在面向对象C++编程中,多态是OO三大特性之一,这种多态称为运行期多态,也称为动态多态;在泛型编程中,多态基于template(模板)的具现化与函数的重载解析,这种多态在编译期进行,因此称为编译期多态或静态多态。在本文中,我们将了解:什么是运行期多态转载 2017-01-03 14:35:18 · 255 阅读 · 0 评论 -
c++ const 全面总结!
C++中的const关键字的用法非常灵活,而使用const将大大改善程序的健壮性,本人根据各方面查到的资料进行总结如下,期望对朋友们有所帮助。 Const 是C++中常用的类型修饰符,常类型是指使用类型修饰符const说明的类型,常类型的变量或对象的值是不能被更新的。一、Const作用 如下表所示: 二、Const的使用 1、定义常量 (1)const修饰变量,以下两转载 2016-12-23 11:08:37 · 20635 阅读 · 1 评论 -
机器计数-原码, 反码, 补码 (详解)
本篇文章讲解了计算机的原码, 反码和补码. 并且进行了深入探求了为何要使用反码和补码, 以及更进一步的论证了为何可以用反码, 补码的加法计算原码的减法. 论证部分如有不对的地方请各位牛人帮忙指正! 希望本文对大家学习计算机基础有所帮助! 一. 机器数和真值 在学习原码, 反码和补码之前, 需要先了解机器数和真值的概念.1、机器数一个数在计算机中的二进制表示形式, 叫做这个数的机器数。机器数是带转载 2016-12-23 19:51:49 · 1617 阅读 · 0 评论 -
c/c++ static关键字总结
C++的static有两种用法:面向过程程序设计中的static和面向对象程序设计中的static。前者应用于普通变量和函数,不涉及类;后者主要说明static在类中的作用。 1.面向过程设计中的static 1.1 static 声明的变量在C语言中有两方面的特征: 1)、变量会被放在程序的全局存储区中,这样可以在下一次调用的时候还可以保持原来的赋值。这一点是它与堆栈变量和堆变量的转载 2016-12-26 11:36:09 · 321 阅读 · 0 评论 -
inline函数和#define 宏 c/c++
c程序中,可以用宏代码提高执行效率。宏代码本身不是函数,但使用起来像函数,编译预处理器会拷贝宏代码的执行方式取代函数调用,省去了参数压栈、生成汇编语言的CALL调用、参数返回、执行return 等过程,从而提高了速度。使用宏代码的最大缺点是容易出错,预处理器在拷贝宏代码时常常产生意想不到的边际效应,例如: #define MAX(a,b) (a)>(b)?(a):(b) result = MAX原创 2016-12-26 13:27:44 · 329 阅读 · 0 评论 -
c++-const_cast 使用
C++提供了四个转换运算符: const_cast (expression) static_cast (expression) reinterpret_cast (expression) dynamic_cast (expression)一、const_cast (expression) const_cast转换符是用来移除变量的const或volatile限定符。 1.1**用转载 2016-12-26 15:47:44 · 3074 阅读 · 1 评论 -
(转)遵循placement new的用法规范
标准的开始由一个特别的操作符new来定义,这个就是我们熟知的placement new。和其他普通的new不同的是,它在括号里多了另外一个参数。比如:Widget * p = new Widget; //ordinary new //普通的new pi = new (ptr) int; pi = new (ptr) int; //placement new括号里的参数是一个指针,它指向一个内存缓转载 2016-12-29 14:59:28 · 362 阅读 · 0 评论 -
c++ explicit在构造函数中的应用
explicit的主要用法就是放在单参数的构造函数中,防止隐式转换, 导致函数的入口参数, 出现歧义. 如果可以使用A构造B, 未加explicit的构造函数, 当使用B进行参数处理时, 就可以使用A, 使得接口混乱. 为了避免这种情况, 使用explicit避免隐式构造, 只能通过显示(explicit)构造. 下面是代码, 仔细阅读必有收获, 可以试着删除explicit, 调用注释的语句转载 2016-12-30 15:24:03 · 310 阅读 · 0 评论 -
c++--学习笔记
1、c++编译链接模型 2、c++二进制兼容性问题 3、c++值语义和对象语义区别 4、c++ 数据对象ADT 5、闭包 6、RVO和NRVO优化 7、boost::noncopyable 8、boost::asio 9、对象 拷贝复制构造 问题原创 2017-06-13 16:42:29 · 546 阅读 · 0 评论