随笔分类 -  C++

摘要:1. 引用传递与值传递的选择2. 返回值的传递1. 引用传递与值传递的选择熟悉C++的人都知道,C++中函数参数的默认传递方式是值传递(pass-by-value),这种传递方式的好处是在函数内部使用的是实参的一个副本,在函数内部对其操作不会影响实参的值。但是我们也知道,对象的拷贝是会有时间和空间消耗的,而且如果对象所占空间很大的话,以值来传递参数很可能相当费时而极大程序的限制了程序的性能。C++提供了一种高效的对象传递方式:引用传递。自定义类型使用值传递带来的问题:第一,传递对象的效率低。传递对象会调用对象的构造函数,造成时间和空间的浪费。特别如果对象所占的空间很大时,带来的负面效果尤为明显 阅读全文
posted @ 2013-03-26 09:40 xd_xiaoxin 阅读(2806) 评论(3) 推荐(3) 编辑
摘要:介绍boost::shared_ptr相关的一些内容:用法、实现机制、使用时的注意事项等。boost::shared_ptr和std::tr1::shared_ptr使用方法相同 阅读全文
posted @ 2013-02-26 01:27 xd_xiaoxin 阅读(8899) 评论(2) 推荐(2) 编辑
摘要:如果想让你的类定义出来的对象是独一无二的,即对象无法被复制,或者使用赋值操作符赋给另外一个对象,那么最好的方法就是禁用拷贝构造函数和赋值操作符。下面介绍几种禁用的方法。(方法来自Effective C++,如果想禁用类的其他函数,方法类似)1. 定义为private且不实现它2. 继承Uncopyable类3. C++0x中的新方法1. 定义为private且不实现它我们知道,拷贝构造函数和赋值操作符重载函数,即使不定义,编译器也会生成一个默认的函数。但是如果定义了,class还是会支持这两个函数。那么应该怎么去禁用它们呢?在C++中,如果不想让对象调用某个方法,那么可以将这个方法声明为pri 阅读全文
posted @ 2013-01-11 01:04 xd_xiaoxin 阅读(1529) 评论(0) 推荐(0) 编辑
摘要:在C++中当创建一个空类时,C++就会默认的为这个类创建4个函数:默认的构造函数、析构函数、拷贝构造函数、以及赋值操作符。本文参考Effective C++介绍这几个函数。目录:1. 函数的原型以及创建函数的时机2.赋值操作符存在的问题3. C++0x的新变化1. 函数的原型以及函数创建的时机C++中创建一个空类:class Empty {};默认会生成4个函数,其函数的原型如下:public: Empty() { ... } Empty(const Empty& rhs) { ... } ~Empty() { ... } Empty& operator=(cons... 阅读全文
posted @ 2013-01-09 00:56 xd_xiaoxin 阅读(1542) 评论(3) 推荐(0) 编辑
摘要:C++中的默认值在C++中,编译器不会默认检查对象是否被初始化,这就会导致对象在不初始化的情况下被使用,造成不可预计的后果。因此,C++程序员必须保证自己所使用的变量已经有了一个明确的初始值。一般情况下,在C++中,如果一个变量为全局代码段,则一般编译器会给一个初始的定值,如int类型会赋0。而定义为局部变量时,则默认值为随机数。但是在vs调试时,DEBUG版本和Release版本版本还有区别:http://www.dewen.org/q/8450/C%2B%2B+%E4%B8%AD+bool+%E5%8F%98%E9%87%8F%E7%9A%84%E9%BB%98%E8%AE%A4%E5%8 阅读全文
posted @ 2013-01-06 01:43 xd_xiaoxin 阅读(1041) 评论(0) 推荐(0) 编辑