本节书摘来自异步社区出版社《C++面向对象高效编程(第2版)》一书中的第章,第2.15节,作者: 【美】Kayshav Dattatri,更多章节内容可以访问云栖社区“异步社区”公众号查看。
C++面向对象高效编程(第2版)下面是文件Int.cc的一部分:
// Print 成员函数的实现 #include <iostream.h> #include “Int.h” void TInt::Print() const { // cout是ostream的一个实例, ostream是一个标准的i/o流库类(stream library class)。 cout << "0x" << _mostSignificantPart << ", 0x" << _leastSignificantPart; // 在此函数中对数据成员的任何赋值行为都视为非法 }``` 理解代码 如果忽略类名TInt、::、后缀的`const`关键字,该声明看起来像是一个普通的函数:void Print(){ cout << "0x" << _mostSignificantPart << ",0x" << _leastSignificantPart;}`这是一个普通的函数。那么,如何识别(或者区分)类的成员函数?只需在函数名前添加类名和::。本例中,::是作用域解析操作符。TInt::Print说明Print()函数是TInt类的一个成员函数(该函数已在头文件中声明)。如果Print()函数未在Int.h头文件中声明,试图定义它将导致一个编译期错误。注意,在函数中,const限定符只能用于成员函数。根据以上的分析,在定义类的成员函数时,我们使用“类名::函数名”的语法,就这么简单。由于成员函数属于类,经过这样的处理后,即使在两个或多个类中使用同名成员函数也不会彼此发生冲突。在成员函数内部,我们可以访问类的任何元素(数据成员或者成员函数)。
相关资源:C#高级编程(第6版) part2.