`
文章列表

宏与内联

    博客分类:
  • c++
普通函数的实现是编译器,有参数压栈,生成汇编语言的CALL,返回参数,执行汇编语言的RETURN等的开销,但宏没有,宏的实现是预处理器,一般用大写字母区别于普通函数 内联函数和普通函数一样,任何在类中定义的函数自动成为内联函数,非类的函数加inline成为内联,但类与非类的内联函数体的具体实现要和声明放一起,一般放头文件中。 class A{ inline void fun1(){}; inline void fun2(); } inline void A::fun2() { } 这两种都是可以的

sync,shutdown,usr

sync:同步数据,将内存中的数据刷新到硬盘上,相当于refresh shutdown +10:系统就会10分钟后关机 文件名以.开关是的隐藏文件 usr:UNIX Software Resource

mutable

    博客分类:
  • c++
mutable是让变量在const的函数里面可以被修改

struct

    博客分类:
  • c++
struct{ int I; double d; } size = 12; struct{ char c;//size=1; double d; } size = 12; struct{ int I; long double ld; } size = 16; struct{ char c; long double ld; } size = 16; struct和class有两个区别: 第一:struct中的成员默认是public的,class中的默认是private的。 第二:在用模版的时候只能写template < ...

Qt sleep

    博客分类:
  • Qt
sleep()//秒 msleep()//毫秒 usleep()//微秒 以前为了模拟鼠标点击用过这些函数,可以让进程中断,今天发现我原来的做法其实不对. 这组函数会将你当前的线程/进程变为“睡眠”状态。 这个“睡眠”是深度意义的睡眠, 睡眠期间内核不会分配给程序时间片, 所以程序什么都不做, 更不用提界面的刷新了。 直接导致的问题就是用户无法与程序交互。 所以说直接使用sleep函数睡眠是常见的错误方案之一。 另外一种更常见的错误方法是使用QTimer+死循环。 类似下面的代码: QTimer t; t.start(); while(t.elapsed() < 250); 这个简单粗暴 ...

野指针

    博客分类:
  • c++
简单来说就是free或delete释放了内存后,没有将指针设置为空,而产生的

goto的妙用

    博客分类:
  • c++
goto本没有错,之所以不推荐是程序员自己造成的,但有一处可妙用: {   {     {       ...       goto error;     }    } } error:     ... 就象楼房着火了,来不及从楼梯一级一级往下走,可从窗口跳出火坑。所以我们主 张少用、慎用goto 语句,而不是禁用
1.通过头文件来调用库功能。在很多场合,源代码不便(或不准)向用户公布,只 要向用户提供头文件和二进制的库即可。用户只需要按照头文件中的接口声明来调用库 功能,而不必关心接口怎么实现的。编译器会从库中提取相应的代码。 2.头文件能加强类型安全检查。如果某个接口被实现或被使用时,其方式与头文件 中的声明不一致,编译器就会指出错误,这一简单的规则能大大减轻程序员调试、改错 的负担。
static变量,即使在其它文件被声明为extern,链接器也不会找到他

输出二维数组

    博客分类:
  • c++
#include<iostream> using namespace std; int main() { int ia[3][4]={ {0,1,2,3}, {4,5,6,7}, {8,9,10,11} }; int (*p)[4]=ia; for(int i=0;i<3;i++){ for(int j=0;j<4;j++){ cout<< ...
#include<iostream> #include<vector> using namespace std; int main() { int a[]={1,2,3,4,5}; vector<int> v(a,a+4); for(vector<int>::iterator iter=v.begin(); iter!=v.end(); ++iter) { ...
#include<iostream> #include<string> using namespace std; int main() { string str; cin >> str; const char *c = new char[5]; c = str.c_str(); for(int i=0;i<5;i++) cout<<c[i]; cout << endl; } ...
发现由于仅有的java基础无法满足需求了,工作中许多遇到的问题虽然可以解决,但是解决完后早已没有一丝激动,而是无比空虚,于是决定将c++ primer和c++编程思想的习题都做一遍,虽然有的已经用c,java实现数次了,但是我还是觉得有必要再做一次,可能贴的程序会很白痴,望大家见谅。也欢迎高手提出宝贵意见,不胜感激

Linux硬件状况

sensors:测试主机状况(温度什么的) lsmod:usb芯片版本 iostat: cpu与存储设备状态

QDataStream初始化

    博客分类:
  • Qt
QFile file(filePath); if (not file.open(QFile::ReadOnly)) { return; } 1.直接初始化 QDataStream stream(file); 2.如果不方便直接初始化 QByteArray byteArray = file.readAll(); QBuffer buffer(byteArray); buffer.open(QFile::ReadOnly);//这里要和上面一样,要不然会无法读取 stream.setDevice(&buffer); QIODevice *device ...
Global site tag (gtag.js) - Google Analytics