Welcome 微信登录
编程资源 图片资源库 蚂蚁家优选 PDF转换器

首页 / 操作系统 / Linux

C++中的抽象类以及接口的区别联系

C++中的抽象类以及接口的区别联系

抽象类和接口抽象类:抽象类是特殊的类,不能被实例化(将定义了纯虚函数的类称为抽象类);除此以外,具有类的其他特性;重要的是抽象类可以包括抽象方法,这是普通类所不能的,但同时也能包括普通的方法。抽象方法只能声明于抽象类中,且不包含任何实现,派生类必须覆盖它们。另外,抽象类可以派生自一个抽象类,可以覆盖基类的抽象方法也可以不覆盖,如果不覆盖,则其派生类必须覆盖它们。虽然不能定义抽象类的实例,但是可以定义它的指针,这正是用抽象类实现接口的重点所在。接口: 接口是...
C语言的可变参数表函数的设计

C语言的可变参数表函数的设计

首先在介绍可变参数表函数的设计之前,我们先来介绍一下最经典的可变参数表printf函数的实现原理。一、printf函数的实现原理在C/C++中,对函数参数的扫描是从后向前的。C/C++的函数参数是通过压入堆栈的方式来给函数传参数的(堆栈是一种先进后出的数据结构),最先压入的参数最后出来,在计算机的内存中,数据有2块,一块是堆,一块是栈(函数参数及局部变量在这里),而栈是从内存的高地址向低地址生长的,控制生长的就是堆栈指针了,最先压入的参数是在最上面,就是说...
C++中智能指针的设计和使用

C++中智能指针的设计和使用

智能指针(smart pointer)是存储指向动态分配(堆)对象指针的类,用于生存期控制,能够确保自动正确的销毁动态分配的对象,防止内存泄露。它的一种通用实现技术是使用引用计数(reference count)。智能指针类将一个计数器与类指向的对象相关联,引用计数跟踪该类有多少个对象共享同一指针。每次创建类的新对象时,初始化指针并将引用计数置为1;当对象作为另一对象的副本而创建时,拷贝构造函数拷贝指针并增加与之相应的引用计数;对一个对象进行赋值时,赋值操...
用Perl 语言写freeswitch dialplan

用Perl 语言写freeswitch dialplan

freeswtich支持 lua, perl, php等脚本语言编写dialplan, 类似asterisk 里面的agi,但freeswitch 更轻量级,其xml格式dialplan 手写确实麻烦,mod_perl实现了用perl写dialplan的接口,也就是说我们可以用perl调用freeswich提供的api编写自己的业务逻辑,尤其是当你想在dialplan里面引入业务相关的,比如查询数据库,与第三方业务平台交互数据(json,xml格式等),用...
Ubuntu下编译C程序的详解

Ubuntu下编译C程序的详解

1、c语言中的各种后缀名代表的意思:.a文件代表的是静态库.c代表c源代码.h代表c源代码头文件.i代表的是c源代码(这是被预处理过后的结果).o对象文件.s汇编语言的代码.so动态库2、c语言程序从源代码到生成可执行文件的过程:c程序源代码(.c文件)-----(1)-----不用预处理的c程序源代码(.i文件)----(2)---汇编语言文件(.s文件)------(3)-----机器语言文件(.o文件)-----(4)------可执行文件其中的每个...
Google Go语言搭建开发环境

Google Go语言搭建开发环境

Go语言Go语言是谷歌2009发布的第二款开源编程语言。Go语言专门针对多处理器系统应用程序的编程进行了优化,使用Go编译的程序可以媲美C或C++代码的速度,而且更加安全、支持并行进程。2012年3月28日,G0语言的第一个正式版本Go1发布。特色 简洁 快速 安全 并行 有趣 开源 支持泛型编程,内存管理,数组安全,编译迅速Google Go语言开发环境的搭建 for windows第一步:安装go可以去这里下载:http://code.google....
使用Mina框架开发 QQ Android 客户端

使用Mina框架开发 QQ Android 客户端

Apache MINA是一个网络应用程序框架,用来帮助用户简单地开发高性能和高可靠性的网络应用程序。它提供了一个通过Java NIO在不同的传输例如TCP/IP和UDP/IP上抽象的事件驱动的异步API。 Apache MINA 也称为: ● NIO 框架库 ● 客户端服务器框架库 ● 一个网络套接字库 MINA虽然简单但是仍然提供了全功能的网络应用程序框架: ● 为不同的传输类型提供了统一的API: ○ 通过Java NIO提供TCP/IP...
Spring的Quartz定时器同一时刻重复执行二次的问题解决

Spring的Quartz定时器同一时刻重复执行二次的问题解决

最近用Spring的quartz定时器的时候,发现到时间后,任务总是重复执行两次,在tomcat或jboss下都如此。打印出他们的hashcode,发现是不一样的,也就是说,在web容器启动的时候,重复启了两个quartz线程。 研究下来发现quartz确实会加载两次: 第一次:web容器启动的时候,读取applicationContext.xml文件时,会加载一次。 第二次:Spring本身会加载applicationContext.xml一次。 而我的...
把驱动编译进内核的3种方法(mini2440 key按键为例)

把驱动编译进内核的3种方法(mini2440 key按键为例)

把驱动编译进内核的3种方法-----(mini2440 key按键为例)方法1:单独以模块的方式编译及加入内核的方法(最简单的方法)说明:key.c(key_hui.c)是驱动的代码,Makefile是编译规则,key.ko是驱动。key_irq是测试代码.(1). 在源程序目录make arch=arm ,就会生成key.ko文件(2) 系统启动进入控制台后insmod key.ko(3) 查看设备号cat /proc/devices(4) 创建节点mk...
Linux下利用backtrace追踪函数调用堆栈以及定位段错误

Linux下利用backtrace追踪函数调用堆栈以及定位段错误

一般察看函数运行时堆栈的方法是使用GDB(bt命令)之类的外部调试器,但是,有些时候为了分析程序的BUG,(主要针对长时间运行程序的分析),在程序出错时打印出函数的调用堆栈是非常有用的。在glibc头文件"execinfo.h"中声明了三个函数用于获取当前线程的函数调用堆栈。intbacktrace(void**buffer,intsize) 该函数用于获取当前线程的调用堆栈,获取的信息将会被存放在buffer中,它是一个指针列表。参数 size 用来指定...
C++之static静态修饰符详解

C++之static静态修饰符详解

•静态类成员:是那些与类本身有关的成员数据和成员函数,而不是与该类对象相关的成员数据和成员函数。所以静态成员数据也称为类数据,静态成员函数也称为类方法。静态成员数据在类里只是一个说明,还需要一个定义(或叫初始化)。静态成员数据要在类定义之外被初始化(要用类名限定修饰),而且程序里只能提供一次,所以初始化不能放在头文件里。例1:classTest{ public: staticintk; Test(inta):k(a){ } }; ...
Linux 有名管道(FIFO)

Linux 有名管道(FIFO)

无名管道应用的一个重大限制是它没有名字,因此,只能用于具有亲缘关系的进程间通信,在有名管道(named pipe或FIFO)提出后,该限制得到了克服。FIFO不同于管道之处在于它提供一个路径名与之关联,以FIFO的文件形式存在于文件系统中。这样,即使与FIFO的创建进程不存在亲缘关系的进程,只要可以访问该路径,就能够彼此通过FIFO相互通信(能够访问该路径的进程以及FIFO的创建进程之间),因此,通过FIFO不相关的进程也能交换数据。值得注意的是,FIFO...
<< 3461 3462 3463 3464 3465 3466 3467 3468 3469 3470 >>