![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C/C++
文章平均质量分 68
cryn
这个作者很懒,什么都没留下…
展开
-
c++单元测试工具之——gtest
gtest是谷歌为C++开发的单元测试框架,该框架基于xUnit架构。gtest提供了较丰富的测试特性,且其命令行方式输出界面友好美观,是C++单元测试工具的较佳选择。1 gtest环境部署先从这里下载到gtest源码包,解压后执行如下命令:./configuremake这里google没有提供make install行为来安装,我们需要手动安装。继续执行以下命令:cp li原创 2013-01-04 15:26:52 · 2682 阅读 · 0 评论 -
c++指向成员的指针(一)
指向成员的指针(Pointer to Member)也称为成员指针,可能很多人对这一项技术比较陌生,也可能当你看到成员指针这个词会把它理解为类里面有个指针成员,实际上它们是两回事。成员指针是指通过指针来操作类里面的成员,包括两种——数据成员和函数成员。原创 2014-03-12 10:33:25 · 1392 阅读 · 0 评论 -
你真的理解指针、数组和字符串吗?
指针、数组、字符串是C/C++语言中重要的组成部分,很多人认为指针比较难理解,而初学者更容易在这里犯错误,其实当你真正理解其本质后,也就不难了。首先来看一些错误用法的示范:原创 2014-02-20 15:59:51 · 1108 阅读 · 0 评论 -
C++的Rule of Three
Rule of Three是国外的人提出来的一条法则,可运用于很多行业,在他们看来,数字3代表稳定,也让人觉得舒服。可以把它理解为三者法则,国内也有人翻译为三强鼎立法则。C++中的Rule of Three指的是析构函数、拷贝构造函数和重载赋值函数三者之间的关系,具体指的是在一个类当中当你需要显式地定义这三个函数中的任意一个时,你应该同时显式地定义其它两个,也就是说这三个函数要么都不定义,要么原创 2014-02-19 21:18:02 · 4482 阅读 · 0 评论 -
显式构造函数
构造一个对象可以有多种方法,有一种构造用到了隐式转换规则,请看一段代码:class MyClass { string m_name;public: MyClass(const char *name) { m_name = name; } const string &name() const { return m_name; }};void tmyclass() { M原创 2014-02-18 10:34:54 · 951 阅读 · 0 评论 -
成员初始化列表
任一个对象的创建都要调用构造函数,而在构造函数中一般要给对象属性赋值。成员初始化列表(member initialize list)是构造函数中特有的语法,用以简化对对象属性的赋值。其用法如下:class MyClass { int m_a, m_b, m_c;public: MyClass(int a = 0, int b = 0, int c = 0) : m_a(a), m_b原创 2014-02-18 11:30:40 · 822 阅读 · 0 评论 -
c++ this 指针详解
首先来观察一段代码:class MyClass { int m_data;public: MyClass(int d = 0) : m_data(d) {} int data() const { return m_data; }};void tmyclass() { MyClass obj1; MyClass obj2(100); cout << obj1.data(原创 2014-02-28 23:39:29 · 1020 阅读 · 0 评论 -
c++ final类实现
有时候我们希望一个类不能被别的类继承,这种类称为final类,在C++11标准之前要实现这种技术,需要巧妙地利用一些细节。如何使得一个类不能被继承但又不影响该类的使用呢?这里的方法我们需要用到多级继承技巧。首先我们要明确以下几点:1)如果类的构造函数或析析构函数声明为私有的,那么该类不能被继承,但同时该类也不能使用;2)派生类只能访问基类的公有成员和保护成员,如果是私有继承,基类中所有原创 2014-02-28 01:39:07 · 8351 阅读 · 0 评论 -
c++的单例模式
单例模式指的是一个类只能有一个实例,其实现思想是将类的构造函数声明为私有的,在类的内部提供静态函数获取内部静态对象的指针,示例如下:class Singleton { std::string m_name; Singleton() { }public: static Singleton *getInstance() { static Singleton obj; retur原创 2014-02-28 00:34:42 · 709 阅读 · 0 评论 -
malloc/free和new/delete
C++引入了新的new/delete的动态内存分配方式,其和malloc/free主要有以下几点区别:1)malloc/free是函数,而new/delete是运算符;2)malloc分配失败会返回空指针,而new分配失败默认将产生异常,如果程序没有捕捉异常,程序将崩溃,当然也可以让其不产生异常也返回空指针;3)当分配一个类的对象时,用new可以调用类的构造函数而malloc不会,当释原创 2014-02-21 13:49:28 · 678 阅读 · 0 评论 -
c++日志工具之——log4cplus
1 日志简介程序都不可避免地会出现错误输出或崩溃的情况,这种情况往往在开发阶段很难发现,需要在特定的环境下才会出现,一旦出现这种情况,我们需要快速地定位到问题。很显然,当程序出现这种问题时,如果程序自己能够将当时出现该问题的原因记录下来,则能给我们带来莫大的效率,正是因为有了这种需求,所以就有了日志系统。所谓日志,就是程序运行时自动记录每日运行状态的一种行为,这跟我们传统说的打debug的方法原创 2012-12-28 18:08:46 · 5338 阅读 · 0 评论 -
c++指向成员的指针(二)
上一篇文章我们讲解了成员指针的概念及用法,这里我们再深入来探讨一下。我们知道一般的指针在32位平台上占4个字节,64位平台上占8个字节,但成员指针因为其特殊性,它不是一般的指针,在32位平台上它占8个字节,而在64位平台上占16个字节,这个我们可以通过sizeof很容易测得。我这里的平台是64位,所以接下来以64位平台来研究一下,为何成员指针占16个字节呢?这个在标准中没有多少说明,但在原创 2014-03-12 15:27:28 · 859 阅读 · 0 评论