linux C++开发
漫步者2011
欢迎来找茬!
展开
-
C++中内联函数与宏
C++内联函数(Inline)介绍 介绍内联函数之前,有必要介绍一下预处理宏。内联函数的功能和预处理宏的功能相似。相信大家都用过预处理宏,我们会经常定义一些宏,如#define TABLE_COMP(x) ((x)>0?(x):0) 就定义了一个宏。 为什么要使用宏呢?因为函数的调用必须要将程序执行的顺序转移到函数所存放在内存中转载 2014-11-08 10:59:23 · 377 阅读 · 0 评论 -
深拷贝和浅拷贝的区别?如果要delete一个浅拷贝,需要注意什么条件?
现在有一个指针p1指向了一个内存空间m1; 浅拷贝就是再用一个新的指针p2指向这片内存空间m1; 深拷贝就是用一个新的指针p3指向m1的副本m2 delete一个浅拷贝,首先要测试是不是有其它的指针还在指向这片空间。不然,直接就是野指针了。为什么野指针那么是绝对要禁止的?野指针现在指向了一片内存区间,这片内存区间以前是有意义的,现在被释放了,操作系统可能会讲这边区间放上其它原创 2014-11-24 18:10:09 · 583 阅读 · 0 评论 -
如何使程序脱离终端在后台运行
1. 设置为守护进程fork创建子进程,父进程退出;子进程设置新新会话(setsid()函数); 修改路径(mkdir); 设置文件权限掩码(umask(0)); 关闭所有文件描述符;2. nohup ./a.out & 可以设置为后台运行程序,而且会在当前目录下生成nohup.out,记录程序的输原创 2015-06-02 23:48:39 · 1551 阅读 · 0 评论 -
在C++ 程序中调用被 C 编译器编译后的函数库,为什么要加 extern “C”声明?
C++提供了C 连接交换指定符号extern“C”来解决名字匹配问题。转载 2014-11-08 10:20:00 · 2236 阅读 · 0 评论 -
类中函数成员给数据成员赋值时的问题
在函数setDay()中,局部变量定义为day时,在函数内赋值时要使用this指针已区分两个day变量;或者局部变量定义为与成员变量不同的名字; 1 #include 2 using namespace std; 3 class Data 4 { 5 private: 6 int year; 7 int month; 8 int d原创 2015-08-06 12:02:24 · 4573 阅读 · 0 评论 -
C++标准输入流详解
标准输入流是从标准输入设备(键盘)流向程序的数据。在上一节中已知,在头文件iostream.h中定义了cin,cout,cerr,clog 4个流对象,cin是输入流,cout,cerr,clog是输出流。cin是istream类的对象,它从标准输入设备(键盘)获取数据,程序中的变量通过流提取符“>>”从流中提取数据。流提取符“>>”从流中提取数据时通常跳过输入流中的空格、tab键、换行符转载 2015-01-08 23:25:51 · 1031 阅读 · 0 评论 -
c++读取配置文件
啥也不说,直接上代码#include #include using namespace std;int main(){ ifstream ifs("./conf.txt"); //定义输入流对象 if(!ifs) { cerr<< "ifs create failed!" <<endl; } string ip;原创 2015-01-08 23:17:53 · 391 阅读 · 0 评论 -
虚表指针和虚表
父类中有虚函数,父类继承子类后将有各自的原创 2014-11-24 21:43:52 · 587 阅读 · 0 评论 -
this指针
this指针是类的一个自动生成、自动隐藏的私有成员,它存在于类的非静态成员函数中,指向被调用函数所在的对象。全局仅有一个this指针 每个对象中的数据成员都分别占有存储空间,如果对同一个类定义了n个对象,则有n组同样大小的空间以存放n个对象中的数据成员。但是,不同对象都调用同一个函数代码段。那么,当不同对象的成员函数引用数据成员时,怎么能保证引用的是所指定的对象的数据成员呢?假如,转载 2014-11-25 18:24:51 · 439 阅读 · 0 评论 -
在C++中子类继承和调用父类的构造函数方法
构造方法用来初始化类的对象,与父类的其它成员不同,它不能被子类继承(子类可以继承父类所有的成员变量和成员方法,但不继承父类的构造方法)。因此,在创建子类对象时,为了初始化从父类继承来的数据成员,系统需要调用其父类的构造方法。 如果没有显式的构造函数,编译器会给一个默认的构造函数,并且该默认的构造函数仅仅在没有显式地声明构造函数情况下创建。构造原则如下: 1. 如果子类没有定转载 2014-11-07 12:45:11 · 358 阅读 · 0 评论 -
C++中的标准异常类
C++中的标准异常类namespace std{ //exception派生 class logic_error; //逻辑错误,在程序运行前可以检测出来 //logic_error派生 class domain_error; //违反了前置条件 class invalid_argument; //指出函数的一个无效参数转载 2014-11-07 12:52:55 · 356 阅读 · 0 评论 -
用GDB调试程序(一)
用GDB调试程序GDB概述————GDB是GNU开源组织发布的一个强大的UNIX下的程序调试工具。或许,各位比较喜欢那种图形界面方式的,像VC、BCB等IDE的调试,但如果你是在UNIX平台下做软件,你会发现GDB这个调试工具有比VC、BCB的图形化调试器更强大的功能。所谓“寸有所长,尺有所短”就是这个道理。一般来说,GDB主要帮忙你完成下面四个方面的功能: 1、启动你的转载 2014-11-09 11:35:23 · 268 阅读 · 0 评论 -
GDB调试指令
1. 编译2. 启动:gdb test // test为可执行文件原创 2014-11-09 11:45:13 · 313 阅读 · 0 评论 -
使用popen和system阻塞进程的区别
popen和system都可以执行外部命令。 popen相当于是先创建一个管道,fork,关闭管道的一端,执行exec,返回一个标准的io文件指针。 system相当于是先后调用了fork, exec,waitpid来执行外部命令 popen本身是不阻塞的,要通过标准io的读取使它阻塞 system本身就是阻塞的。 最近写的程序,要求进程在调用的外部命令运行完毕原创 2014-11-19 13:50:32 · 17129 阅读 · 0 评论 -
Ubuntu 下使用命令行安装QT
在Terminal中输入: sudo apt-get install qt4-dev-tools qt4-doc qt4-qtconfig qt4-demos qt4-designer转载 2014-11-19 18:49:17 · 3022 阅读 · 0 评论 -
信号和槽使用时各种函数的实际调用顺序
信号和槽机制是 QT 的核心机制,要精通 QT 编程就必须对信号和槽有所了解。信号和槽是一种高级接口,应用于对象之间的通信,它是 QT 的核心特性,也是 QT 区别于其它工具包的重要地方。所有从 QObject 或其子类 ( 例如 Qwidget) 派生的类都能够包含信号和槽。当对象改变其状态时,信号就由该对象发射 (emit) 出去,这就是对象所要做的全部事情,它转载 2014-11-19 18:52:36 · 5690 阅读 · 1 评论 -
c++中explicit
C++提供了关键字explicit,可以阻止不应该允许的经过转换构造函数进行的隐式转换的发生。声明为explicit的构造函数不能在隐式转换中使用。转载 2014-11-19 23:32:51 · 271 阅读 · 0 评论 -
线程池创建原理及实现
本文给出了一个通用的线程池框架,该框架将与线程执行相关的任务进行了高层次的抽象,使之与具体的执行任务无关。另外该线程池具有动态伸缩性,它能根据执行任务的轻重自动调整线程池中线程的数量。文章的最后,我们给出一个简单示例程序,通过该示例程序,我们会发现,通过该线程池框架执行多线程任务是多么的简单。为什么需要线程池目前的大多数网络服务器,包括Web服务器、Email服务器以及数据库服务器等都具有转载 2016-10-10 11:27:19 · 1568 阅读 · 0 评论