您的位置:首页 > 编程语言 > C语言/C++

高质量程序设计指南-c/c++语言:笔记之C++函数的高级特性

2012-06-01 09:25 155 查看
高质量程序设计指南-c/c++语言:笔记之C++函数的高级特性

*. 对于c语言的函数,c++增加了重载、内联、const、virtual四种新机制。

1.其中重载、内联可以用于全局函数;const virtual则只能用于类的成员函数

一。重载;

*. 只能靠参数列表来区分,不能靠返回值来区分。

*. 因为c++的编译机制与c的编译机制不同,所以要想在c++中调用已经被编译的c函数,我们应该用extern "C" { #endif #include "myheader.h" #ifdef __cplusplus}

这就是链接规范的概念。

*. 全局函数与类函数同名不会有冲突,因为他们的作用区域不同。 ::Abc() 表示调用全局东东

*. 重载的重要标志:在同一个作用域中。所以,类之间通过继承的同名函数,不构成重载,而是隐藏掉了。 可以使用类名把这些隐藏的东东现形。

二。默认值;

*. 默认值出现在函数的声明,不应该出现在函数的定义

*. 必须是从右边到左边的写函数默认值,否则调用的时候就无法区分谁有默认谁没有默认。

三。运算符重载;

*. 前置:无参数 , 后置:有象征性的int参数。

四。函数内联;

*. 目的:提高函数的执行效率。

*. 比预处理宏要更好用,可以调试。

*. inline要放在函数的定义前哦,不能仅仅放在函数的声明前面。

五。具有类型转换的构造函数;会造成该对象作为形参的时候导致具有隐士转换的效果;

*. 可以使用explicit阻止这种隐士转换机制。

*. 优点:方便了我们许多的事情哦。

*. 缺点:有点乱。哈哈。

六。const成员函数;

*. 定义:任何不会修改数据成员的成员函数都应该声明为const类型。提高程序的健壮性。

*. const放在函数的最后面,大概是因为其他的地方被占用了。哈哈。

*. 但是如果真的要修改某个数据成员,但业务上这个函数是const,那么在这个成员数据声明前面加上一个 vartable...好像是这个,不太记得了。

高质量程序设计指南-c/c++语言:笔记之对象的初始化、拷贝和析构

*. c++类会自动生成4大天王:1. A () 2. A(const A&) 3. ~A() 4. A& operator = (const A& a); 默认构造,默认拷贝构造,默认析构,默认赋值函数。

*. 根据经验,不少难以察觉的程序错误是由于变量没有被正确初始化或者清除造成的,而初始化和清除工作很容易被人遗忘。

*. 注意:不要在构造函数内做与初始化对象无关的事情,不要在析构函数内做与销毁一个对象无关的工作。

比如:对于一个用于消息发送和接收的类来说,不应该在构造函数内打开一个socket链接,同样不应该在析构函数内断开一个socket链接,而应该把打开和断开socket链接放到另外的成员函数内来完成。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: