递归与分治策略之整数划分
将正整数划分为一些列正整数之和。在正整数n的所有不同的划分中,将最大加数n1不大于m的划分个数记为q(n, m).可以建立q(n, m)的递归关系。
如何从零开始学会 Ruby on Rails
Windows下Python安装模块
重载运算符++
自定义重载运算符++时,为了区分前++和后++,在重载后++时添加哑参数。
Python Dict
dict
字典的用法,dict的查找特别快捷。如果我们的项目经常用到搜索某些数据,最好用dict类型。
Python List
list是python里非常强大的数据类型
如何使同一个用户组的用户拥有一个目录的开发权
拷贝构造函数与赋值运算符
总结一下:拷贝构造函数会逐一复制成员,所以如果对象里有指针,那么默认拷贝构造函数只会复制指针的内容,而不会为新对象分配相应的动态空间(存储指针所指向的内容),这样导致了两个对象的数据成员指向同一个地址,在释放空间时,导致同一块空间被释放两次这样的错误。同样赋值也会逐一复制成员,有指针成员也会导致析构这样释放空间的操作时出现错误,所以一般需要重写拷贝构造函数的类,也需要重写“=”赋值运算符。
不得不重写的拷贝构造函数
自定义一个栈类,使用一个栈对象初始化另一个对象,自然会用到拷贝构造函数,代码如下
File /home/Alvin/git_projects/octopress/source/downloads/code/copy_constructor.cpp could not be found 以上代码在执行的时候会出现:
1
|
|
也就是说,我们释放了两次动态分配的空间。为了解决这个问题,我们需要重写拷贝构造函数,在拷贝构造函数中重写申请新对象的动态空间。
1
|
|
Store the Return Value in a Refrence
C++中,临时对象生存周期和它被创建时整个语句的生命长度相同,但是我们可以将临时变量赋值给const reference来延长它的生命长度。