c++ 学习---类的设计总结
2009-04-01 14:19
330 查看
1 编译器生成的成员函数
(1)默认构造函数
这个不做详细的介绍,相信的大家已经很了解了。
(2)复制构造函数
className(const className &);
在下述情况下将使用复制构造函数
a)将新的对象初始化为一个同类的对象
b)按值就对象传递给参数
c)函数按值返回对象
d)编译器生成临时对象
(3)复制操作符
className & operator= (const className &);
不要将复制和初始化混淆了,如果创建新的对象则是初始化,如果语句修改已有对象的值,则是赋值
className object1;
className ob2 = object1; // 这是初始化
className ob3;
ob3 = object1;//这是赋值
之所以要区分开,是因为赋值和初始化默认调用的函数是不同的
2 其他类方法
(1)构造函数 不做介绍
(2)析构函数 这里注意,在类的继承的中,即使基类不需要析构函数,也应该定义一个虚拟的析构函数。这
是很好的编程习惯
(3)转换函数
(4) 按值传递对象与传递引用
通常使用对象作为参数时,应该按引用而不是按值传递对象,其原因主要有两点:
a)提高效率。按值传递时要生成临时对象,就会调用复制构造函数,然后还要调用析构函数,要花费很多时间,如果不修改对象的值,最好加上const
b)在使用虚函数时,按引用传递,可以让基类类型的参数接受派生类的对象
(5)返回对象和返回引用
原则是方法如果能返回引用,就不用返回对象,即引用首选
(1)默认构造函数
这个不做详细的介绍,相信的大家已经很了解了。
(2)复制构造函数
className(const className &);
在下述情况下将使用复制构造函数
a)将新的对象初始化为一个同类的对象
b)按值就对象传递给参数
c)函数按值返回对象
d)编译器生成临时对象
(3)复制操作符
className & operator= (const className &);
不要将复制和初始化混淆了,如果创建新的对象则是初始化,如果语句修改已有对象的值,则是赋值
className object1;
className ob2 = object1; // 这是初始化
className ob3;
ob3 = object1;//这是赋值
之所以要区分开,是因为赋值和初始化默认调用的函数是不同的
2 其他类方法
(1)构造函数 不做介绍
(2)析构函数 这里注意,在类的继承的中,即使基类不需要析构函数,也应该定义一个虚拟的析构函数。这
是很好的编程习惯
(3)转换函数
(4) 按值传递对象与传递引用
通常使用对象作为参数时,应该按引用而不是按值传递对象,其原因主要有两点:
a)提高效率。按值传递时要生成临时对象,就会调用复制构造函数,然后还要调用析构函数,要花费很多时间,如果不修改对象的值,最好加上const
b)在使用虚函数时,按引用传递,可以让基类类型的参数接受派生类的对象
(5)返回对象和返回引用
原则是方法如果能返回引用,就不用返回对象,即引用首选
相关文章推荐
- 总结c++设计学习
- VS2010 C++学习(1):滚动条的设计总结
- 总结C++设计学习
- 最近准备做一个C++模式设计方面的学习总结,希望有路过看见的人推荐一下
- bootstrap学习总结-css样式设计(一)
- 【C++深入浅出】设计模式学习之观察者模式
- 20145230《信息安全系统设计基础》第2周学习总结
- 设计模式学习总结-代理模式(Proxy Method)
- 设计模式学习总结(11) 门面模式
- 20145204《信息安全系统设计基础》第7周学习总结
- C++总结之设计和实现篇
- 设计模式C++学习笔记之八(Adapter适配器模式)
- 14-9-11 C/C++课程设计--图书馆管理系---<time.h>中时间数据类型的学习记录
- 20145223《信息安全系统设计基础》第7周学习总结
- [OOAD]面向对象分析与设计之控制驱动部分设计学习总结
- DSP学习总结——项目设计流程
- 第六章c++函数学习总结
- 设计模式大杂烩(24种设计模式的总结以及学习设计模式的几点建议)
- 设计模式学习总结-状态模式(State Method)