自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(17)
  • 收藏
  • 关注

原创 7.2 异常处理

Q1:编译器的任务• 支持异常处理,编译器的主要工作是找到 catch 子句,以处理被抛出的异常。需要支持以下几个工作:• 追踪程序堆栈中每一个函数的目前作用区域(包括追踪函数中局部类对象当时的情况)• 提供某种查询异常对象的方法,以知道其实际类型• 管理被抛出对象的机制,包括其产生,存储以及析构Q2:异常处理知识点回顾• 当异常被抛出时,控制权将从函数调用中释放出来,并寻找一个吻合的 catch

2015-08-31 17:56:42 420

原创 6.3 临时对象

Q1:讨论一下三种语句产生临时对象的情况 //1. T c = a + b; //2. c = a + b; //3. a + b;对第一种情况,实现时不会产生临时对象,可能会直接以拷贝构造的情况,将 a + b 的值放入 c 中,或是直接进行NRV优化,导致直接在对象 c 中求值操作以下讨论另外两种情况Q2:对 c =

2015-08-29 11:51:15 401

原创 6.2 new 和 delete 运算符

Q1:new运算符• new运算符是由两个步骤组成1. 通过适当的new运算符函数的实例,配置所需要的内存2. 给配置得来的对象设立初值Eg: int * pt = new int(5); //实际操作如下: int * pt; if(pt = _new(sizeof(int))) *pi = 5; //通过构造

2015-08-26 12:10:46 671

原创 6.1 对象的构造与析构

Q1:对象的构造函数与析构函数的分布• 对象在被创建时就会调用其构造函数 ,若在一个区段中有一个以上的离开点,则析构函数必须放在每个离开点前Eg: { Point point; //构造函数调用 switch(int(point.x)) { case -1 : //析构

2015-08-25 14:51:18 641

原创 C++实现线程池类

* 定义任务类class Job{ Job(void*(*p)(void*),void * a) : process(p),arg(a),next(NULL){} void * (* process)(void *); void * arg; Job * next;};任务类的 process 参数是每个线程要执行的函数的指针,arg 为传入该函数的参数* 定义

2015-08-23 22:32:14 721 1

原创 建立TCP连接,实现基本通信

1、TCP连接服务器端需要做的事情描述:建立监听套接字(socket函数),绑定监听接口(bind函数),进行监听(listen),调用connect函数等待在监听套接字上等待连接套接字的描述符:1. 创建监听套接字,并绑定监听接口: int sockfd = socket(AF_INET,SOCK_STREAM,0); // AF_INET说明为 IPV4协议,SOCK_STREAM说明为

2015-08-23 21:28:24 1989

原创 序言

说明:之前看完了 UNP 就想开发一个基本的即时通讯的软件,着手写了以后发现好多Linux下的东西理不清,写了一半就戛然而止了,果断上手看APUE,花了好几个月的功夫,看完 APUE 后继续之前的任务,但这次推翻了所有之前写的代码,从零开始从头写,花了一个半周的晚上的时间,开发了一个简单的即时通讯软件,好多之前想写的功能暂时放弃了,具体原因以下说明。之后将暂时将即时通讯软件放一放,先看看 shell

2015-08-22 10:59:57 535

转载 一个Linux下C线程池的实现

什么时候需要创建线程池呢?简单的说,如果一个应用需要频繁的创建和销毁线程,而任务执行的时间又非常短,这样线程创建和销毁的带来的开销就不容忽视,这时也是线程池该出场的机会了。如果线程创建和销毁时间相比任务执行时间可以忽略不计,则没有必要使用线程池了。    下面是Linux系统下用C语言创建的一个线程池。线程池会维护一个任务链表(每个CThread_worker结构就是一个任务)。  

2015-08-21 17:23:52 426

原创 5.2 继承体系下的对象构造

Q1:在数据成员定义了三种构造成员函数与析构函数之一的情况下:*注:上述三个构造成员函数指:默认构造函数,复制构造函数,赋值操作符函数• 以下列例子进行讨论:Eg: class Point { public: Point(int i = 0, int j = 0) :x(i), y(j),{} Point(con

2015-08-21 13:17:07 546

原创 5.1 无继承情况下的对象构造

Q1:POD对象的构造• 以下讨论围绕下述例子展开: Eg: struct point { float x, y, z; }; point global; int main() { point l

2015-08-19 16:19:56 553

转载 C/C++改变终端输出字体的颜色(Linux)

简单的说就是ESC[*m,ESC的八进制为\033,*可以是多个属性的组合,用分号隔开。例:#includeint main(){    printf("\033[31mThis is RED.\n\033[0m");    return 0;}31m代表字体为红色,0m代表关闭所有属性。常用的ANSI控制码如下(有些

2015-08-16 22:01:30 6184

转载 关于位域的知识

位域有些信息在存储时,并不需要占用一个完整的字节, 而只需占几个或一个二进制位。例如在存放一个开关量时,只有0和1 两种状态, 用一位二进位即可。为了节省存储空间,并使处理简便,C语言又提供了一种数据结构,称为“位域”或“位段”。所谓“位域”是把一个字节中的二进位划分为几个不同的区域, 并说明每个区域的位数。每个域有一个域名,允许在程序中按域名进行操作。 这样就可以把几个不同的对象用一个字

2015-08-16 21:59:32 415

原创 4.5 内联函数

Q1:inline关键字• 关于 inline 请求是否被接收• inline 关键字是一项请求,如果这项请求被接收,编译器就必须认为它可以用一个表达式合理的将这个函数扩展开。• 这种合理性体现在:这个内联函数的执行成本比一般的函数调用以及返回机制所带来的负荷低(编译器内部存在衡量方法)• 处理一个 inline 函数有两个阶段分析函数定义,以决定函数的“instrisic inline abil

2015-08-16 16:57:40 490

转载 static 关键字的作用

C程序一直由下列部分组成:   1)正文段——CPU执行的机器指令部分;一个程序只有一个副本;只读,防止程序由于意外事故而修改自身指令;      2)初始化数据段(数据段)——在程序中所有赋了初值的全局变量,存放在这里。      3)非初始化数据段(bss段)——在程序中没有初始化的全局变量;内核将此段初始化为0。       4)栈——增长方向:自顶向下增长;自动变量以及

2015-08-16 16:24:21 619

原创 4.4 指向成员函数的指针

Q1:非静态成员函数的地址• 非静态成员函数地址值:○ 如果该函数是非虚函数,则得到的结果是其在内存中真正的地址○ 如果该函数是虚函数,则得到的结果是其在虚函数表中的索引值• 地址不完全性(数据成员的地址与函数成员的地址): ○ 非静态数据成员的地址是其在类的布局中的位置(加1),是一个不完整的值,需要将其绑定在一个类对象上,才能进行存取○ 非静态函数成员(非虚)的地址是其在内存中的真正地址,但仍是

2015-08-16 16:03:13 668

转载 epoll使用详解(精髓)

epoll - I/O event notification facility在linux的网络编程中,很长的时间都在使用select来做事件触发。在linux新的内核中,有了一种替换它的机制,就是epoll。相比于select,epoll最大的好处在于它不会随着监听fd数目的增长而降低效率。因为在内核中的select实现中,它是采用轮询来处理的,轮询的fd数目越多,自然耗时越多。并且

2015-08-14 22:27:37 366

原创 4.2 虚拟成员函数

Q1:C++多态形式:静态多态性、动态多态性• 多态:以一个 “public base class” 的指针寻址出一个 “derived class object”(深入探索C++对象模型定义)• 静态多态性通常称为编译时多态,到底模板是不是多态???我个人认为不是• 动态多态性通常称为运行时多态,通过虚函数来实现• 动态多态性的两个条件:○ 在基类中必须使用虚函数或纯虚函数○ 调用函数时使用基类的

2015-08-14 18:44:07 659

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除