C++ 11中共有四种智能指针(Smart Pointers):std::auto_ptr,std::unique_ptr,std::shared_ptr,std::weak_ptr。其中std::auto_ptr是在C++98中就引入的智能指针,在C++11中已经被std::unique_ptr所取代。所以本文主要讨论讨论剩下的三种智能指针。

阅读全文 »

本文转载自Herb Sutter的blog。Herb Sutter是C++标准委员会的主席,他在本文中主要讲述了C++ 11 带来的新的一些feature,同时建议尽量使用Modern C++ style编程。

同时我建议阅读Scott Mayers的《Effective Modern C++》一书。

原文如下。

阅读全文 »

最近在看Lippman的《Inside the c++ object model》,书中Lippman说有人发邮件问了他一个问题。

1
2
3
4
5
6
class X {};

class Y : public virtual X{};
class Z: public virtual X{};

class A:public Y, public Z{};

根据以上定义,使用sizeof运算符分别计算类X,Y,Z,A的所占大小。

阅读全文 »

在C语言中,data和function是独立的entity,换句话说data和function是没有直接关联的。所以说使用C编程是面向过程编程,使用一个个的function来操作外在的data。而在C++中,通过Class将data和function集合在一起,形成一个Object。通过面向对象编程的三大特点:1)封装2)继承3)多态 来实现更好的灵活性。

阅读全文 »

一个bug引起的思考

最近碰到一个bug,是在一个log模块,在使用vsprintf_s函数时发生access deny错误。奇怪的是在Debug模式下没有问题,切换到Release模式下就会重现。我把问题简单化后的代码如下:

阅读全文 »