C++小知识

来源:互联网 发布:手机测光表软件 编辑:程序博客网 时间:2024/05/21 15:07

1. 一切c++的成员函数编译好以后最终都是C函数(这个表述可能不太准确),静态非静态的区别在于编译后的函数是否带一个隐藏的this参数。

class Foo{void A(){}; //== Foo::A(Foo* this)static void a(){};              //== Foo::a()};

2. boost库中sleep有两个方法:
         1>. 这个方法只能在线程中用, 在主线程中用无效. 
原型:
void sleep(TimeDuration const& rel_time);  
void sleep(system_time const& abs_time);  
实例:
boost::this_thread::sleep(boost::posix_time::seconds(2));    // 这种更好用  
boost::this_thread::sleep(boost::get_system_time() + boost::posix_time::seconds(2));  
          2>. 在主线程中使用
原型:
sleep(const system_time& xt);  
实例:
boost::thread::sleep(boost::get_system_time() + boost::posix_time::seconds(5));  

3. printf按8进制、16进制输出

printf()8进制、16进制输出格式控制:

    int num = 0x9;

    /*输出4位8进制的num*/
    printf("%04o/n",num);

   /*输出2位16进制的num*/
    printf("%02X",num);

结果:

     0011

     09

4. error C2143: 语法错误 : 缺少“;”(在“类型”的前面)
原因:
    纯c要求局部变量定义必须在函数或局部空间的开头,然后才能有其他语句。vs是严格执行了纯C的标准。变量任意定义是c99的标准。
解决方案:
    将所有要使用的变量先在函数开始的部分声明。




0 0
原创粉丝点击