C++的构造函数与重载
来源:互联网 发布:硬盘录像机网络设置 编辑:程序博客网 时间:2024/06/05 06:30
在C++程序中,可以将语义、功能相似的几个函数用同一个名字表示,即函数重载。
C++规定构造函数与类同名,构造函数只能有一个名字。如果想用几种不同的方法创建对象该怎么办?别无选择,只能用重载机制来实现。所以类可以有多个同名的构造函数。
几个同名的重载函数仍然是不同的函数,它们是如何区分的呢?我们自然想到函数接口的两个要素:参数与返回值。
只能靠参数而不能靠返回值类型的不同来区分重载函数。编译器根据参数为每个重载函数产生不同的内部标识符.
C++ 语言支持函数内联,其目的是为了提高函数的执行效率(速度)。
C++ 语言的函数内联机制既具备宏代码的效率,又增加了安全性,而且可以自由操作类的数据成员。所以在C++ 程序中,应该用内联函数取代所有宏代码,“断言assert”恐怕是唯一的例外。
而如下风格的函数Foo则成为内联函数:
void Foo(int x, int y);
inline void Foo(int x, int y) // inline与函数定义体放在一起
{
…
}
以下情况不宜使用内联:
(1)如果函数体内的代码比较长,使用内联将导致内存消耗代价较高。
(2)如果函数体内出现循环,那么执行函数体内代码的时间要比函数调用的开销大。
类的构造函数和析构函数容易让人误解成使用内联更有效。要当心构造函数和析构函数可能会隐藏一些行为,如“偷偷地”执行了基类或成员对象的构造函数和析构函数。所以不要随便地将构造函数和析构函数的定义体放在类声明中。
C++ 语言中的重载、内联、缺省参数、隐式转换等机制展现了很多优点,但是这些优点的背后都隐藏着一些隐患。正如人们的饮食,少食和暴食都不可取,应当恰到好处。我们要辨证地看待C++的新机制,应该恰如其分地使用它们。虽然这会使我们编程时多费一些心思,少了一些痛快,但这才是编程的艺术。
- <C++>14.构造函数的重载与拷贝构造函数
- 复制构造函数与赋值重载(c++)
- 函数的重载与构造函数
- JAVA的构造函数与函数重载
- C++的构造函数与重载
- JAVA - 构造函数的重载与继承
- 重载与构造函数的解析
- 构造函数的特点区别与重载
- java的构造函数与重载
- php函数重载与构造函数重载
- 构造函数的重载
- 构造函数的重载
- 构造函数的重载
- 构造函数的重载
- C#:方法重载、构造函数、重载构造函数小结
- 拷贝构造函数与赋值运算符的重载函数
- C++,类的构造函数重载,语法练习
- 拷贝构造函数与重载赋值操作符的区别
- 在ASP.NET中解决路径的问题
- Spring之IOC
- 开始投靠C#,入门版(一)
- 论裸睡
- How to Pass IList As parameter to wcf service
- C++的构造函数与重载
- 面向对象设计之:多态
- 技术解析:什么是模式? 什么是框架?
- u-boot编译错误(一)
- 传说中的花语全套
- 培养自制的七步骤
- RAM,ROM,FLASH存储器分类
- 循环队列实现高速缓存的读写
- csdn,救人于水火!