高质量程序设计指南-c/c++语言:笔记之C++函数的高级特性
2012-06-01 09:25
239 查看
高质量程序设计指南-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链接放到另外的成员函数内来完成。
*. 对于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链接放到另外的成员函数内来完成。
相关文章推荐
- 《高质量程序设计指南——C/C++》第14章 C++函数的高级特性
- 高质量程序设计指南-c/c++语言:笔记之内存管理
- 排序算法,基本的高级语言都有一些提供。C语言有qsort()函数,C++有sort()函数,java语言有Arrays类(不是Array)。用这些排序时,都可以写自己的排序规则。
- C++函数的高级特性
- IO特性(1): socket相关的几个高级IO函数(Unix网络编程笔记)
- STL学习笔记----C++的新语言特性
- C++函数的高级特性-函数重载
- 高质量C++/C编程指南 -- 第8章 C++函数的高级特性
- 第 8 章 C++函数的高级特性索引
- 第八章 C++函数的高级特性(8.1 函数重载的概念)
- c++函数的高级特性
- Swift 笔记 七:swift函数的高级特性
- C++编程规范---第8章 C++函数的高级特性
- 第八章 高质量C编程规范C++函数的高级特性
- 廖雪峰Python的研读笔记(一) Python基础、函数、高级特性
- Python学习笔记3---PYTHON函数与高级特性
- Swift 笔记 七:swift函数的高级特性
- C++函数的高级特性-函数重载
- C++ 学习笔记 1.0 : 基本语言(变量和基本类型,标准库类型,表达式,语句,函数,标准IO库)
- C高级(5)--C++函数的高级特性