- 浏览: 763571 次
- 性别:
- 来自: 深圳
文章列表
一.boost::timer
1.timer一旦被声明,它的构造函数就启动了计时工作,之后就可以随时用elapsed()函数简单地测量自对象创建后所流逝的时间。当有些代码需要优化时,用它来测试提速了多少很不错。
2.但是timer不适合高精度的时间测量任务,它的精度依赖于操作系统或编译器,难以做到跨平台
#include<boost/timer.hpp>
#include<iostream>
using namespace boost;
using namespace std;
int main()
{
timer t;
cout & ...
1.使用Boost库不需要预先编译,直接引入工程即可编译链接,方便库的使用使用
2.许多编译器尚不支持C++标准提出的模板的分离编译模式(export关键字),而Boost库大量使用了模板,为了保持与各个编译器的兼容,也不得不采用.hpp的头文件形式
鸟哥再见了,unix高级编程(好书,不解释),unix编程艺术(还不错),linux内核设计与实现(纯理论性),深入理解linux内核(很详细)
软件管理机制 在线升级方式
dpkg yum
RPM apt
SRPM(Source RPM)的扩展名是以***.src.rpm这种格式来命名的,其软件内容没有经过编译,提供的是源代码
#ifndef RATIONAL_H
#define RATIONAL_H
#include<iosfwd>
class Rational{
public:
int mNum;
int mDen;
public:
Rational(int numerator = 0,int denominator = 1);
Rational operator-()const;
friend Rational operator+(const Rational&,
co ...
静态函数库扩展名为:libxxx.a的类型
动态函数库扩展名为:libxxx.so的类型
将动态函数库加载高速缓存当中:
1.首先,我们必须要在/etc/ld.so.conf里面写下想要读入高速缓存当中的动态函数库所在的目录
2.接下来则是利用ldconfig这个可执行文件将/etc/ld.so.conf的数据读入缓存当中
3.同时也将数据记录一份在/etc/ld.so.cache这个文件中
ld.so.conf里面的内容最好为这样:
include /etc/ld.so.conf.d/*.conf
c++的异常要比java的麻烦一点...
1.通常情况下,应该在异常处理器中使用引用参数而不是值参数,以防异常对象所包含的信息被切割掉,"..."能捕获任何异常一般放在最后,从而避免架空它后面的异常处理器。
2.异常是在运行时而不是在编译时被检测的,因此,编译时存在的大量信息在处理异常的时候是不存在的
3.如果没有任何一个层次的异常处理器能够捕获某种异常,一个特殊的库函数(terminate())会被自动调用让程序执行异常而退出,全局对象和静态对象的函数不会执行。
4.如果一个对象的构造在执行过程中抛出异常,那么析构函数就不会被调用,一般不要在析构函数里抛出异常
#inc ...
c++编程思想第一部分的题目已经做完了,现在向第二部分进发,发现有点力不从心了,看来书得看仔细点了。
转自google,c++编程规范
一.作用域
1. 不在构造函数中做太多逻辑相关的初始化;
2. 编译器提供的默认构造函数不会对变量进行初始化,如果定义了其他构造函数,编译器
不再提供,需要编码者自行提供默认构造函数;
3. 为避免隐式转换,需将单参数构造函数声明为explicit;
4. 为避免拷贝构造函数、赋值操作的滥用和编译器自动生成,可目前声明其为private
且无需实现;
5. 仅在作为数据集合时使用struct;
6. 组合>实现继承>接口继承>私有继承,子类重载的虚函数也要声明virtual关键字,
虽然编译器允许不这样做;
7. 避免使用多重继承,使用时,除一 ...
晚捆绑(late binding=动态绑定(dynamic binding)=运行时绑定(runtime binding)
如果一个函数在基类被声明为virtual,那么在所有的派生类中它都是virtual的。在派生类中virtual函数的重定义通常称为重写
纯虚函数禁止对抽象类的函数以值方式调用。这也是防止对象切片(object slicing)的一种方法。通过抽象类,可以保证在向上类型转换期间总是使用指针或引用,如果使用值则总是调用的是基类的实现
构造函数是不能为虚函数的,但析构函数能够且常常必须是虚的。不把析构函数设为虚函数是一个隐匿的错误,因为它常常不会对程序有直接的影响。但要注意 ...
组合:我们简单地在新类中创建已存在类的对象,因为新类是由已存在类的对象组合而成。
构造函数的初始化表达式表允许我们显式地调用成员对象的构造函数
构造函数和析构函数不能被继承
operator=也不能被继承
私有继承
#include<iostream>
using namespace std;
class A{
public:
void f(){}
};
class B:A{//default private
public://need public
using A::f;//no ()
};
int main()
{
...