自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(8)
  • 收藏
  • 关注

原创 读《More Effective C++35个改善编程与设计的有效方法》之条款3:绝对不要以多态方式处理数组

有以下程序: class Base { public: Base(int n = 0) : _b(n) {} int _b; }; class Devide : public Base { public: Devide(int n = 0, int m = 0) : Base(n), _d(m) {} int _d; int _d1; }; void print(std::ostr

2016-05-15 10:44:04 814

原创 读《深度探索C++对象模型》之对象成员的效率

测试平台:华硕N53S(五年前的老机子) 编译环境:VS2010 接下来我将会有多个测试,在多个不同环境下的所消耗的时间比较: 五个测试分别为:个别的局部变量、局部数组、struct之的Public、class 之中的inline Get函数、 class之中的inline Get & Set函数: 代码片段如下: struct Point { Point(float mx, floa

2016-05-08 14:50:09 763

原创 读《深度探索C++对象模型》之分层继承对于内存布局的影响

请看以下代码: class Concrete { public: private: int val; char c1; char c2; char c3; };我在我的电脑上运行,求得的类Concrete的大小为8byte,我想还是符合我们的预期(val:4byte, c1 : 1byte, c2 : 1byte, c3: 1byte),在加上字节对齐的一个字节,刚好是8byte。 那

2016-05-08 14:03:05 846

原创 读《深度探索C++对象模型》之成员初始化列表作用

很多时候,我们在定义构造函数时,有人会选择将成员初始化放在函数里,有人会放在成员初始化列表中,这两种有什么区别呢,先运行以下代码: class test { friend test foo(double); public: test() { memset(array, 0, 100 * sizeof(double)); } inline test(const test &t) {

2016-05-07 15:22:47 773

原创 读《深度探索C++对象模型》之拷贝构造函数是否有必要明确定义?

我想,对于大部分程序员来说,一般的类都会定义构造函数/虚构函数/拷贝构造函数/赋值函数等,但是真的有必要吗,难道让编译器默认替我们定义一个不好吗,请看以下例子: class Point { public: Point(float x, float y, float z) { _x = x; _y = y; _z = z; } private: float _x, _y, _z

2016-05-07 15:06:05 846

原创 读《深度探索C++对象模型》有感

我想有看过不少C++的书籍,都会有以下的表述: 在Class中,如果我们没有声明构造函数,编译器都会给我们默认构造一个构造函数,也就是Default Construct,但是真的是如此吗,请看以下的example: lass AA { public: int x; AA *next; }; int main() { AA a; std::cout << a.x << std::end

2016-05-07 10:27:18 857

原创 Effective C++ 改善程序与设计的55个具体做法之条款37

本条款:绝不重新定义继承而来的缺省参数值 直接上以下代码: #include class Shape{ public: enum ShapeColor {Red, Green, Blue}; virtual void draw(ShapeColor color = Red) const = 0; }; class Rectangle : public Shape { public:

2016-05-05 20:05:59 471

原创 Effective C++ 改善程序与设计的55个具体做法之条款33

本条款:避免遮掩继承而来的名称。 我们在C++中经常会用到继承,会用到多态,会重载函数等,以下主要讲解遇到的一个会很容易犯错的点: 先给测试代码: #include class Base { private: int x; public: virtual void mf1() = 0; virtual void mf1(int) {} virtual void mf2(){}

2016-05-05 19:26:45 404

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除