- 博客(72)
- 收藏
- 关注
转载 QT 的信号与槽机制介绍
QT 是一个跨平台的 C++ GUI 应用构架,它提供了丰富的窗口部件集,具有面向对象、易于扩展、真正的组件编程等特点,更为引人注目的是目前 Linux 上最为流行的 KDE 桌面环境就是建立在 QT 库的基础之上。QT 支持下列平台:MS/WINDOWS-95、98、NT 和 2000;UNIX/X11-Linux、Sun Solaris、HP-UX、Digital Unix、IBM AIX、S
2013-08-30 16:40:01
459
转载 qt的APPLication Mainwindow layout 的基本知识
Qt中的每个类,都有一个对应的同名头文件,其中包含其类定义。例如要使用QApplication类,则需要在程序中添加" #include " QApplication类用于管理应用程序范围内的资源。其构造函数需要main函数的argc和argv作为参数。widget被创建时都是不可见的(always created hidden)。widget中可容纳其它widget。
2013-08-26 21:42:19
1933
转载 在C/C++中,指针和数组的区别
在C/C++中,指针和数组在很多地方可以互换使用,这使得我们产生一种错觉,感觉数组和指针两者是完全等价的,事实上数组和指针是有很大的区别的。 1.两者在含义上的区别。 数组对应着一块内存区域,而指针是指向一块内存区域。其地址和容量在生命期里不会改变,只有数组的内容可以改变;而指针却不同,它指向的内存区域的大小可以随时改变,而且当指针指向常量字符串时,它的内容是不可以被修改的,否则在运行时会
2013-08-23 21:06:06
620
转载 对C/C++中的static与extern关键字的使用
本篇文章是对C/C++中的static与extern关键字的使用进行了详细的分析介绍,需要的朋友参考下一.C语言中的static关键字在C语言中,static可以用来修饰局部变量,全局变量以及函数。在不同的情况下static的作用不尽相同。(1)修饰局部变量一般情况下,对于局部变量是存放在栈区的,并且局部变量的生命周期在该语句块执行结束时便结束了。但是如果用static进行修饰的话
2013-08-23 20:54:48
602
转载 malloc函数,realloc函数与calloc函数的区别
以下是对c语言中的malloc函数,realloc函数与calloc函数的区别以及它们之间的联系进行了介绍,需要的朋友可以过来参考下ANSI C说明了三个用于存储空间动态分配的函数(1) malloc分配指定字节数的存储区。此存储区中的初始值不确定(2) calloc为指定长度的对象,分配能容纳其指定个数的存储空间。该空间中的每一位(bit)都初始化为0(3) re
2013-08-23 20:41:34
979
转载 构造函数的深入理解
拷贝构造函数是C++最基础的概念之一,大家自认为对拷贝构造函数了解么?请大家先回答一下三个问题:1. 以下函数哪个是拷贝构造函数,为什么?X::X(const X&); X::X(X); X::X(X&, int a=1); X::X(X&, int a=1, b=2); 2. 一个类中可以存在多于一个的拷贝构造函数吗?3. 写出以下程序段的输出结果, 并
2013-08-23 20:31:37
526
转载 约瑟夫环问题
约瑟夫环问题(Josephus) 用户输入M,N值,从1至N开始顺序循环数数,每数到M输出该数值,直至全部输出。写出C程序。(约瑟夫环问题 Josephus)解法一(My Solution): 思想:建立一个有N个元素的循环链表,然后从链表头开始遍历并记数,如果计数i==m(i初始为1)踢出元素,继续循环,当当前元素与下一元素相同时退出循环。代码:
2013-08-23 17:49:13
502
转载 const 内存分配
常量有没有存储空间,或者只是编译时的符号而已?不一定。在C中,define常量是预处理阶段的工作,其不占据内存。但是const常量总是占据内存在C++中,const常量是否占据存储空间取决于是否有引用该常量地址的代码。C++对于const默认为内部链接,因此const常量定义通常都放在头文件中,即使分配内存也不会出现链接错误。若不引用常量对应的地址,则不会为其分配空
2013-08-22 22:00:09
793
原创 map的使用
Map是c++的一个标准容器,她提供了很好一对一的关系,在一些程序中建立一个map可以起到事半功倍的效果,总结了一些map基本简单实用的操作!1. map最基本的构造函数; mapmapstring; mapmapint; mapmapstring; mapmapchar; mapmapchar; mapmapint
2013-08-21 21:38:05
513
转载 list 的 splice 函数
list::splice实现list拼接的功能。将源list的内容部分或全部元素删除,拼插入到目的list。函数有以下三种声明:void splice ( iterator position, list& x ); // void splice ( iterator position, list& x, iterator i );void splice ( ite
2013-08-21 17:50:28
897
转载 list 的 merge
STL list容器由于采用了双向迭代器,不支持随机访问,所以标准库的merge(), sort()等功能函数都不适用,list单独实现了merge(),sort()等函数。首先说一下merge() (以void merge(list& __x); 为例)按照函数声明的注释:/** * @brief Merge sorted lists. *
2013-08-21 17:49:39
1015
转载 [C++][STL]容器的capacity、max_size以及内存分配
capacity - 容器的成员函数capacity()取得max_size - 容器的成员函数max_size()取得STL容器的capacity属性,表示STL在发生realloc前能允许的最大元素数,也可以理解为预分配的内存空间。例如一个vector v的capacity为5,当插入第6个元素时,vector会realloc,vector内部数据会复制到另外一个内存区域。这样
2013-08-20 21:19:53
864
转载 vector的reserve和resize的区别
vector 的reserve增加了vector的capacity,但是它的size没有改变!而resize改变了vector的capacity同时也增加了它的size!原因如下: reserve是容器预留空间,但在空间内不真正创建元素对象,所以在没有添加新的对象之前,不能引用容器内的元素。加入新的元素时,要调用push_back()/insert()函数。 r
2013-08-20 21:11:52
550
原创 派生类、基类和继承
1、在私有继承方式下,基类的public成员在派生类中都变成私有的,特别是成员函数变为私有后,切断了派生类对象访问基类的私有成员、特别是私有数据成员的消息通路。为此,C++提供了一种“访问声明”的调整机制,其作用是在派生类作用域内回复它们原来在基类中的访问权限,其格式为: class derivedclass : private baseclass {
2013-08-19 17:52:13
1499
1
转载 虚析构函数的重要性
C++多态性表现在它为编程者提供了运算符重载,函数名重载和虚函数等运行机制。运算符重载和函数名重载采用静态联编机制,而虚函数采用动态联编机制。 在一个类层次结构中,基类说明有虚函数,而在派生类作用域内将基类的虚函数重新编写一个新的函数体,那么 基类的析构函数就必须指定为虚析构函数,否则很可能产生程序隐患。特别在含有动态变量和动态对象的程序中,因使用delete运算符删除一个对象时不
2013-08-19 17:26:57
528
转载 基类和派生类的赋值规则
在公有继承方式下:派生类的对象/对象指针/对象引用可以赋值给基类的对象/对象指针/对象引用,基类的对象/对象指针/对象引用不能赋值给派生类的对象/对象指针/对象引用。因为派生类包含了基类的所有信息,而基类缺乏派生类中的信息。 True 基类对象/对象指针/对象引用 = 派生类对象/对象指针/对象引用 False 派生类对象/对象
2013-08-19 17:22:57
3091
转载 静态联编和动态联编
联编是指一个计算机程序自身彼此关联的过程,在这个联编过程中,需要确定程序中的操作调用(函数调用)与执行该操作(函数)的代码段之间的映射关系;按照联编所进行的阶段不同,可分为静态联编和动态联编;静态联编:是指联编工作是在程序编译连接阶段进行的,这种联编又称为早期联编;因为这种联编是在程序开始运行之前完成的;在程序编译阶段进行的这种联编又称静态束定;在编译时就解决了程序中的
2013-08-19 16:44:08
791
转载 C++中静态成员函数访问成员变量问题
C++会区分两种类型的成员函数:静态成员函数和非静态成员函数。这两者之间的一个重大区别是,静态成员函数不接受隐含的this自变量。所以,它就无法访问自己类的非静态成员。左例中分别声明了成员函数void add(),成员变量int a,和静态成员函数 static void staticfunc(),静态成员变量 static int sa.在staticfunc()的定义中
2013-08-16 20:55:19
2630
转载 shmdt与shmctl的区别
先看看 shmctl() 原型: int shmctl ( int shmqid, int cmd, struct shmid_ds *buf ); 返回:成功为 0 , 失败 为-1 这个特殊的调用和semctl()调用几乎相同,因此,这里不进行详细的讨论。有效命令的值是: IPC_STAT :检索一个共享段的shmid_ds结构,把它存到buf参数的地址中。
2013-08-10 22:37:14
1089
转载 文件权限数字所代表的信息
chmod ABC file其中A、B、C各为一个数字,分别表示User、Group、及Other的权限。A、B、C这三个数字如果各自转换成由“0”、“1”组成的二进制数,则二进制数的每一位分别代表一个角色的读、写、运行的权限。比如User组的权限A:如果可读、可写、可运行,就表示为二进制的111,转换成十进制就是7。如果可读、可写、不可运行,就表示为二进制的110,转换成十进制就是
2013-08-10 16:43:11
1327
转载 IO模式设置,阻塞与非阻塞的比较,recv参数对性能的影响
第一部分在网络程序中遇到的一些问题进行了总结, 这里主要针对的是我们常用的TCP socket相关的总结, 可能会存在错误, 有任何问题欢迎大家提出.对于网络编程的更多详细说明建议参考下面的书籍《UNIX网络编程》 《TCP/IP 详解》 《Unix环境高级编程》非阻塞IO和阻塞IO:在网络编程中对于一个网络句柄会遇到阻塞IO和非阻塞IO的概念, 这里对于这两种socket先做
2013-08-10 14:40:26
1249
原创 网络面试题
简单解释下TRUNK?答:交换环境中有两种链路,一种是接入链路另一种就是TRUNK(中继)链路,接入链路只属于一个VLAN,而TRUNK可以承载多个VLAN,TRUNK工作时进行VLAN标识,主要有两种封装模式:IEEE802.1Q和ISL。2,请描述一下PPP协议的应用? PPP协议是目前广域网上应用最广泛的协议之一,它的优点在于简单、具备用户验证能力、可以解决IP分配等。
2013-08-02 17:42:21
811
原创 1、connect方法会阻塞,请问有什么方法可以避免其长时间阻塞? 答:最通常的方法最有效的是加定时器;也可以采用非阻塞模式。 2、网络中,如果客户端突然掉线或者重启,服务器端怎么样才能立刻知道? 答
1、connect方法会阻塞,请问有什么方法可以避免其长时间阻塞?答:最通常的方法最有效的是加定时器;也可以采用非阻塞模式。2、网络中,如果客户端突然掉线或者重启,服务器端怎么样才能立刻知道?答:若客户端掉线或者重新启动,服务器端会收到复位信号,每一种tcp/ip得实现不一样,控制机制也不一样。3.在子网 />答:简:30表示的是网络号(network number)是30
2013-08-02 17:10:17
3317
原创 进程间通信共享内存
共享内存是系统出于多个进程之间通讯的考虑,而预留的的一块内存区。在/proc/sys/kernel/目录下,记录着共享内存的一些限制,如一个共享内存区的最大字节数shmmax,系统范围内最大共享内存区标识符数shmmni等,可以手工对其调整,但不推荐这样做。 一、应用 共享内存的使用,主要有以下几个API:ftok()、shmget()、shmat()、shmdt()及shmc
2013-07-31 22:03:08
552
转载 有名管道和无名管道
无名管道和有名管道(2012-05-07 22:54:53)转载▼标签:杂谈分类: 学习笔记管道是Linux支持的最初Unix IPC形式之一,具有以下特点:管道是半双工的,数据只能向一个方向流动;需要双方通信时,需要建立起两个管道;只能用于父子进程或者兄弟进程之间(具有亲缘关系的进程);单独构成一种独立的文件
2013-07-28 11:34:04
969
转载 pipe和FIFO
首先来看pipe:pipe用于具有相同祖先的进程(最简单的情况:父子进程)之间的通信。在进程中调用pipe函数创建管道。这个管道是由内核创建并管理的。 #include int pipe(intfiledes[2]);该函数返回一个文件描述符数组fd[],fd[0]用于读管道,fd[1]用于写管道。如下图:与 FIFO" title="pipe
2013-07-28 11:32:16
1369
原创 进程的三种基本状态及转换原因
1.进程的三种基本状态 进程在运行中不断地改变其运行状态。通常,一个运行进程必须具有以下三种基本状态。 就绪(Ready)状态 当进程已分配到除CPU以外的所有必要的资源,只要获得处理机便可立即执行,这时的进程状态称为就绪状态。 执行(Running)状态 当进程已获得处理机,其程序正在处理机上执行,此时的进程状态称为执行状态。 阻塞(Blocked)状态
2013-07-27 11:23:25
36260
转载 unix文件中i节点
2. 一个磁盘可以划分为N多扇区,每个扇区有512字节 。扇区是磁盘上的基本存储单元,我们可以将每个扇区进行编号,这样磁盘就变为一系列编了号的块的组合。3. 磁盘块上存储文件时,按照一定的规律。 每个文件系统分为3部分:超级块,i-节点表,数据区 。超级块 :存放文件系统本身的信息,比如记录了每个区域的大小,或未被使用的磁盘块的信息。(不同版本稍有差别)i-
2013-07-27 08:44:49
3477
转载 操作系统面试题
1、什么是进程(Process)和线程(Thread)?有何区别? 进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位。线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属一个进程的其他的
2013-07-26 21:56:39
864
转载 内存申请与一级二级指针
1.如果是函数内进行内存申请,很简单,标准用法就可以了:test(){int *array;array=(int *)malloc(sizeof(int)*10);//申请10*4 bytes,即10个单位的int内存单元}注意,malloc使用简单,但是注意参数和返回值,参数是申请内存的字节数,多字节的类型如int,short,float等需要乘上类型字节数,返回值是
2013-07-14 20:29:56
714
转载 malloc和free函数机制
free(Ptr);Ptr = NULL;// code...就是这样!当然,具体情况要具体分析以及具体解决。比如说,你定义了一个指针,在一个函数里申请了一块内存然后通过函数返回传递给这个指针,那么也许释放这块内存这项工作就应该留给其他函数了。3、关于函数使用需要注意的一些地方:A、申请了内存空间后,必须检查是否分配成功。B、当不需要再使用申请的内存
2013-07-14 20:28:02
1125
转载 C/C++ 内存分配方式,堆区,栈区,new/delete/malloc/free
内存分配方式内存分配方式有三种:[1] 从静态存储区域分配。内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。例如全局变量, static 变量。[2] 在栈上创建。在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集中 ,效率很高,但是分配的内存容量有限。[3] 从堆上
2013-07-14 20:26:13
679
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅