c++
文章平均质量分 72
eversliver
这个作者很懒,什么都没留下…
展开
-
注意Qt的元对象系统。。
1、转自百度百科Qt 元对象系统(Meta-Object System)Qt的元对象系统基于如下三件事情:1. 类:QObject,为所有需要利用元对象系统的对象提供了一个基类。2. 宏:Q_OBJECT,通常可以声明在类的私有段中,让该类可以使用元对象的特性,比如动态属性,信号和槽。3. 编译器:元对象编译器(moc)为每个QObject子对象自动转载 2015-03-28 10:17:31 · 706 阅读 · 0 评论 -
学会使用makefile:1
假设有下面几个文件:maze.hmaze.cmain.hmain.cstack.hstack.c最简单的编译方法当然就是 gcc maze.c stack.c main.c -o main但是这个方法不好,当对maze.c做了一点点的修改之后就要重新编译那些没有修改的文件。当然首先想到的解决办法就是用下面这种方式gcc -c main.cgcc -c maze.cgc原创 2016-01-12 13:08:16 · 484 阅读 · 0 评论 -
学会使用makefile:2
前面一篇介绍的makefile只是较为简单普通的写法,还是有很多改进的余地的。例如依赖不一定要写在一条规则中,也可以拆开写,例如:main.o: main.h stack.h maze.hmain.o: main.c gcc -c main.c这么一来上面的例子可以该写成下面的形式:main:main.o stack.o maze.o gcc mai原创 2016-01-12 15:01:08 · 324 阅读 · 0 评论 -
学会使用makefile:4
这里主要介绍一下如何处理编译文件以来的问题:main.o: main.h stack.h maze.hstack.o: stack.h main.hmaze.o: maze.h main.h 可见上面几个文件都依赖与几个头文件,实际上自己一个一个动手去写会比较麻烦,而且还容易弄错。可以用 gcc 的 -M 选项自动生成目标文件和源文件的依赖关系。如果像去除对系统库文件的以来关系,可以去使用原创 2016-01-12 17:07:01 · 317 阅读 · 0 评论 -
学会使用makefile:5
下面就是介绍一下简单的常用的makefile指令:-n选项会答应出执行指令执行的顺序,但是不会真的去执行这个指令,这有助于确保某个指令的顺序执行的是正确的-C选项可以切换到另一个目录下执行那个目录下的makefile,例如可以用于退回到上一层去执行当前层的makefile:cd ..make -C learnMakeFilemake: Enter Entering director原创 2016-01-12 17:15:35 · 408 阅读 · 0 评论 -
GDB学习:1
首先函数实例如下所示:#include int add_range(int low, int high){ int i, sum; for (i = low; i <= high; i++) sum = sum + i; return sum;}int main(void){ int result[100]; result[0]原创 2016-01-13 17:46:38 · 328 阅读 · 0 评论 -
GDB学习:2
调试中的很重要的一环就是断点了,下面来看看断点:首先是测试程序:#includeint main(void){ int sum = 0, i = 0; char input[5]; while (1) { scanf("%s", input); for (i = 0; input[i] != '\0'; i++)原创 2016-01-13 22:45:06 · 303 阅读 · 0 评论 -
GDB学习:3
下面看一下观察点调试:这里的例子如上所示:#includeint main(void){ int sum = 0, i = 0; char input[5]; while (1) { sum = 0; scanf("%s", input); for (i = 0; input[i] != '\0'; i++)原创 2016-01-14 10:31:12 · 260 阅读 · 0 评论 -
GDB学习:4
在写程序的时候,最容易遇到的一类问题基本上就是段错误的问题,可以借助gdb来解决这类问题,下面是个例子:int main(void){ int man = 0; scanf("%d", man); return 0;}运行输入会出现段错误:root@wc:~/Codes/Learn/learnGDB# ./segfault 1段错误 (核心已转储)下面开原创 2016-01-14 10:52:44 · 802 阅读 · 0 评论 -
Linux read / write详解
read 函数从打开的设备或文件中读取数据。#include ssize_t read(int fd, void *buf, size_t count);返回值:成功返回读取的字节数,出错返回-1并设置errno,如果在调read之前已到达文件末尾,则这次read返回0参数 count 是请求读取的字节数,读上来的数据保存在缓冲区 buf 中,同时文件的当前读写位置向后移。注意这个读写位原创 2016-01-14 22:32:02 · 759 阅读 · 0 评论 -
fcntl详解
前面一篇以 read 终端设备为例介绍了非阻塞I/O,为什么不直接对 STDIN_FILENO 做非阻塞 read ,而要重新 open 一遍 /dev/tty 呢?因为 STDIN_FILENO 在程序启动时已经被自动打开了,而我们需要在调用 open 时指定 O_NONBLOCK 标志。这里介绍另外一种办法,可以用 fcntl 函数改变一个已打开的文件的属性,可以重新设置读、写、追加、非阻塞等原创 2016-01-14 22:57:11 · 476 阅读 · 0 评论 -
mmap详解
mmap 可以把磁盘文件的一部分直接映射到内存,这样文件中的位置直接就有对应的内存地址,对文件的读写可以直接用指针来做而不需要 read / write 函数。#include void *mmap(void *addr, size_t len, int prot, int flag, int filedes, off_t off);int munmap(void *addr, size_原创 2016-01-15 10:42:46 · 415 阅读 · 0 评论 -
关于进程间IPC
管道:由pipe函数可以创建管道:#include int pipe(int filedes[2]);它有一个读端一个写端,然后通过 filedes 参数传出给用户程序两个文件描述符, filedes[0] 指向管道的读端, filedes[1] 指向管道的写端(很好记,就像0是标准输入1是标准输出一样)。所以管道在用户程序看起来就像一个打开的文件,通过 read(filedes[0])原创 2016-01-15 13:48:12 · 244 阅读 · 0 评论 -
构造函数为什么不能是虚函数
1、从存储空间角度 虚函数对应一个vtable,这大家都知道,可是这个vtable其实是存储在对象的内存空间的。问题出来了,如果构造函数是虚的,就需要通过 vtable来调用,可是对象还没有实例化,也就是内存空间还没有,无法找到vtable,所以构造函数不能是虚函数。2、从使用角度 虚函数主要用于在信息不全的情况下,能使重载的函数得到对应的调用。构造函数本身就是转载 2016-04-23 22:46:40 · 307 阅读 · 0 评论 -
C++面试小结
虚函数与纯虚函数: 引入虚函数是为了动态绑定,引入纯虚函数是为了派生接口 基类需要虚的析构函数的原因: 当derived class由一个base class指针被删除而该base class指针为non-virtual的时候,可能会发生内存泄漏,使用虚的析构函数可以解决该问题++i与i++的区别://i++ 实现代码为:int operator++(int){ int原创 2016-07-05 20:31:21 · 3108 阅读 · 0 评论 -
流迭代器的一些作用
流迭代器一般有下面的几种作用: //利用流迭代器填充vector { ifstream in("test.txt"); istream_iterator ibegin(in); istream_iterator iend; vector vec(ibegin, iend); copy(vec.begin(), vec.end(), os转载 2016-01-19 13:30:04 · 650 阅读 · 0 评论 -
关于TCP/IP
关于TCP/IP的几个层次,如下所示:这其中各个层次的数据包的封装如下所示:数据包到达之后由协议栈到达各层的过程如此啊所示:着重要注意一下的就是以太网的帧格式问题:其中的类型字段,主要制订了IP数据报,ARP,RARP 3中类型。源地址及目的地址指的是网卡的硬件地址,长度为6个Byte。以太网帧中的数据长度规定最小46字节,最大1500字节,AR原创 2016-01-17 11:00:17 · 657 阅读 · 0 评论 -
.hpp的相关的使用规则
hpp,其实质就是将.cpp的实现代码混入.h头文件当中,定义与实现都包含在同一文件,则该类的调用者只需要include该hpp文件即可,无需再 将cpp加入到project中进行编译。而实现代码将直接编译到调用者的obj文件中,不再生成单独的obj,采用hpp将大幅度减少调用 project中的cpp文件数与编译次数,也不用再发布烦人的lib与dll,因此非常适合用来编写公用的开源库。一般来原创 2015-07-20 10:19:41 · 1381 阅读 · 0 评论 -
VS2013加上注释的快捷键,以及批量注释的快捷键
1)注释:组合键“Ctrl+K+C”; 2)取消注释:组合键“Ctrl+K+U”不过是单行注释 如果相要全部注释 可以先按Ctrl+A 再按 Ctrl+K+C原创 2015-07-20 10:38:09 · 6833 阅读 · 0 评论 -
一个小函数,算出100到999之间的所有的不含5 的奇数
1234567891011121314151617181920212223242526272829303132333435原创 2015-07-19 20:31:29 · 1969 阅读 · 0 评论 -
Linux,数据库,计算机网络以及C++&Java面试问题补充
linux开机的步骤linux开机步骤运维的一些小题目 在/tmp/目录下创建test.txt文件,内容为: Hello,World! ,用一个命令写出来: echo “Hello,World!” > /tmp/test.txt 用vi命令编辑test.txt,如何跳转到末行,首行,行首、行末,如何在光标行下一行插入,如何复制5行,删除10行,查找jingfeng的字符、把jin原创 2016-08-18 16:11:44 · 5734 阅读 · 1 评论