面向对象编程
--构造函数和复制控制[续]
三、复制控制和继承
合成操作对对象的基类部分连同派生类部分的成员一起进行复制、赋值或撤销,使用基类的复制构造函数、赋值操作符或析构函数对基类部分进行复制、赋值或撤销。
类是否需要定义复制控制成员完全取决于类自身的直接成员。基类可以定义自己的复制控制而派生类使用合成版本,反之,基类使用合成版本,而派生类使用自己定义的...
分类:
编程语言 时间:
2016-05-12 22:22:57
阅读次数:
198
一、关于拷贝构造函数
1、相同类型的类对象是通过拷贝构造函数来完成整个复制过程的;
2、拷贝构造函数是一种特殊的构造函数,函数的名称必须和类名称一致,它必须的一个参数是本类型的一个引用变量;
3、三种情况下会调用拷贝构造函数:对象以值传递的方式传入函数参数、对象以值传递的方式从函数返回、对象需要通过另外一个对象进行初始化;
相关博文:
http://blog.csdn.net/lwb...
分类:
其他好文 时间:
2016-05-12 19:09:40
阅读次数:
133
下面是一个基类 Bitmap 和派生类 Widget, Widget 中定义了一个私有类型 (private) 指针 pb 当在 Widget 类中重载赋值操作符 "=" 时,需要考虑以下几个方面 1 链式赋值 首先要考虑的是,链式赋值 (chain of assignments) 的情况,如下所示 ...
分类:
编程语言 时间:
2016-05-09 06:55:50
阅读次数:
132
C++中大致有三种返回值:值拷贝(副本),值引用和指针,返回什么类型的值要根据当时情况而定。 如果返回的是大型对象的副本,那么在每一次的函数调用后返回,都会调用该对象类型的拷贝构造函数构造一个新的副本,这是一个耗时的过程。 因此在不需要返回对象副本的时候,尽量返回对象的引用或者指针,与此同时,如果不 ...
分类:
编程语言 时间:
2016-05-07 18:03:36
阅读次数:
242
C++ 概念总结(基于 C++11)构造
构造函数形式:
默认构造函数
拷贝构造函数
定义: 当定义一个新对象并用一个同类型的对象对它进行初始化时,将显式使用复制构造函数
形式: A(const A& h){}
调用时机:
当对象作为参数传递时
赋值操作符:
定义: 赋值操作符可以通过制定不同类型的右操作数而重载。
形式: A& operator = (const A& h){}
调用时机:...
分类:
编程语言 时间:
2016-05-07 09:59:25
阅读次数:
242
最近查看了关于c++构造函数的博客,为了防止关键知识的遗忘,特此记录一些要点,以便于今后的查阅。 如果不主动书写构造函数,c++或默认提供一般构造函数,拷贝构造函数以及复制运算符的操作。一般的构造函数没有任何参数,默认提供的该种构造函数不执行任何操作默认提供的拷贝构造函数简单的将成员变量赋值默认提供 ...
分类:
编程语言 时间:
2016-05-05 17:15:01
阅读次数:
257
拷贝构造 零初始化:类型名(),对于基本类型而言是数值0,对于类或者结构类型而言是匿名对象。 当用一个同类对象初始化一个同类新对象时,调用的自然是拷贝构造函数。一个类如果没有定义拷贝构造函数,编译器会自动产生一个构造函数,内容是逐个复制对于的成员。这一般可以满足程序的需求。如果其中有指针成员指向动态 ...
分类:
编程语言 时间:
2016-05-03 23:42:46
阅读次数:
203
第三章 操作符 by flamephoenix 一、算术操作符二、整数比较操作符三、字符串比较操作符四、逻辑操作符五、位操作符六、赋值操作符七、自增自减操作符八、字符串联结和重复操作符九、逗号操作符十、条件操作符十一、操作符的次序 一、算术操作符 :+(加)、-(减)、*(乘)、/(除)、**(乘幂 ...
分类:
其他好文 时间:
2016-05-03 07:05:30
阅读次数:
229
一. 什么是拷贝构造函数
首先对于普通类型的对象来说,它们之间的复制是很简单的,例如:
[c-sharp]
view plain
copy
int a = 100; int b = a;
而类对象与普通对象不同,类对象内部结构一般较为复杂,存在各种成员变量。
下面看一个类对象拷贝的简单例子。
[c-sharp]
view...
分类:
编程语言 时间:
2016-04-29 16:47:55
阅读次数:
225
若类中无无实参构造函数,编译器会自动创建一个,若无析构函数,也会自动创建,若数据域有对象类型时应显示的创建析构函数 拷贝构造函数和赋值符号(=)都为浅拷贝(按值传递基本类型,按引用传引用类型) 一个函数在类声明时实现,自动成为内联函数 inline 是一种"用于实现的关键字",而不是一种"用于声明的... ...
分类:
编程语言 时间:
2016-04-27 20:53:02
阅读次数:
231