章节回顾:《Effective C++》第1章 让自己习惯C++-读书笔记《Effective C++》第2章 构造/析构/赋值运算(1)-读书笔记《Effective C++》第8章 定制new和delete-读书笔记条款05:了解C++默默编写并调用哪些函数当C++处理过一个空类后,编译器就会为...
分类:
编程语言 时间:
2015-04-20 14:30:45
阅读次数:
240
1 /* 2 3 4 实验启示1:构造子类对象时,先调用父类构造函数,后调用子类构造函数 5 实验启示2:析构子类对象时,先调用子类析构函数,后调用父类析构函数 6 实验启示3:在这个对象生命周期结束时,析构函数会自动调用 7 8 9 */10 11 #include12 1...
分类:
编程语言 时间:
2015-04-19 17:35:15
阅读次数:
147
原文出处:点击我:)1.第一段代码#includeusing namespace std;class ClxBase{public:ClxBase() {};~ClxBase() {cout DoSomething();delete p;return 0;}运行结果:Do something in ...
分类:
其他好文 时间:
2015-04-19 11:24:55
阅读次数:
111
Implement a Shell by yourself -- MIT xv6 shell
这个其实是作为6.828的一个小课堂作业 ...
着重分析构建思想和过程,具体代码实现去github可以找到.
https://github.com/jasonleaster/MIT_6_828_assignments_2012/blob/homework1/sh.c
...
分类:
系统相关 时间:
2015-04-19 06:30:39
阅读次数:
256
1.malloc/free是C/C++语言的标准库函数,new/delete是C++的运算符。它们都可用于申请动态内存和释放内存。但是new能够自动分配空间大小,而malloc需要计算字节数。
2.对于非内部数据类型的对象而言,光用maloc/free无法满足动态对象的要求。对象在创建的同时要自动执行构造函数,对象在消亡之前要自动执行析构函数。由于malloc/free是库函数而不是运算符,...
分类:
其他好文 时间:
2015-04-18 11:33:23
阅读次数:
151
传值方式是位拷贝形式,包括对象不调用构造函数,但会调用其析构函数
如果设计了拷贝函数,当从现有的对象创建新对象时,编译器将不使用位拷贝。编译器总是调用我们的拷贝构造函数(c++编译器自动创建的拷贝构造函数也是位拷贝的,是不安全的。所以一般自己创建。)
又一个简单的技术防止通过按值传递方式传递:声明一个私有拷贝构造函数。甚至不必去定义它,除非成员函数或友元函数需要执行按值传递方式的传递。如果用户...
分类:
其他好文 时间:
2015-04-17 18:18:22
阅读次数:
120
方法是属于一个给定对象的过程和函数,方法反映的是对象的行为而不是数据,前一篇提到的对象的两个重要的方法:构造方法和析构方法。 为了使对象能执行各种功能,你能在对象中定制方法 创建一个方法用两个步骤,首先在对象类型的声明中声明这个方法。然后再用代码定义方法。下面的代码就演示了声明和定义一个方法...
下面的程序,因为存在指针类型的数据成员,需要能完成深复制的构造函数。请补充完整构造函数和析构函数(其他不必动)。其中,构造函数要完成下面三个任务:
(1)为各成员函数赋值,按照深复制原则,其中arrayAddr应该是为保存数据新分配的连续空间的首地址;
(2)MyArray(int *a, int n)中,要将a指向的数组中的数值,逐个地复制到新分配的arrayAddr指向的空间中;
(3)...
分类:
编程语言 时间:
2015-04-16 22:02:04
阅读次数:
179
#include
using namespace std;
class A
{
public:
A()
{
cout<<"this is construction"<<endl;
}
virtual ~A()
{
cout<<"this is destruction"<<endl;
}
};
A fun()
{
A a;
return a;
}
int main()
{
...
分类:
其他好文 时间:
2015-04-16 10:18:30
阅读次数:
125