muduo库学习笔记二:base库之timestamp

一、类功能:时间戳类,主要提供基础的时间值获取、计算功能

类图:

常量

  • kMicroSecondsPerSecond表示每秒所对应的微秒数

成员变量

  • microSecondsSinceEpoch_表示到1970-01-01 00:00:00 UTC的微秒数

成员函数

  • swap()交换操作
  • toString()、toFormattedString()将时间转换为string类型或指定格式,
  • valid()判断Timestamp是否有效,
  • invalid()返回一个无效的Timestamp,
  • now()返回当前时间的Timestamp,
  • secondsSinceEpoch()/microSecondsSinceEpoch()返回到1970-01-01 00:00:00 UTC的秒数/微秒数。

二、主要知识点:

  • BOOST_STATIC_ASSERT//编译时断言,让错误发生在编译时,(assert是运行时断言)
  • muduo::copyable//空基类,标识该类是可拷贝的值类型,拷贝之后与原对象脱离关系,深拷贝(c++内置类型都是深拷贝)声明周期便于管理。(对象语义,要么不能拷贝,要么可以拷贝,但是拷贝之后与原对象共享底层资源,声明周期管理一般通过智能指针进行)
  • boost::less_than_comparable<>//继承模板类,要求实现<,可自动实现>,<=,>=
  • PRId64:int64_t用来表示64位整数,在32位系统中是long long int,在64位系统中是long int,所以打印int64_t的格式化方法是:

printf(“%ld”, value);  // 64bit OS

printf("%lld", value); // 32bit OS

跨平台的做法:
#define __STDC_FORMAT_MACROS
#include <inttypes.h>//在该头文件中定义了PRI64
#undef __STDC_FORMAT_MACROS 
printf("%" PRId64 "\n", value);

三、测试程序:

首先,将base库目录下的Timestamp.h、Timestamp.cc、Types.h拷贝到自己新建的目录下,同时拷贝编译脚本和CMakeLists

整个目录结构为:

经过编译,我们可以生成一个静态库libmuduo_base.a

接下来,拷贝Timestamp_unittest.cc,(功能-获取当前时间;计算时间差)重新编译

验证timestamp类功能,在build/debug/bin下运行timestamp_unittest

接下来,来实战编译时断言,在base下新建bsa.cc

内容为:

进行编译,即可以在编译时观察到断言错误。

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值