定义成员函数
来源:互联网 发布:微软雅黑light mac 编辑:程序博客网 时间:2024/05/21 10:40
1. 引入this
std::string isbn () const { return bookNo ;}
定义 Sales_data total; 在类外调用total.isbn();
在这里,使用点运算符访问total对象的isbn的成员,所以当我们调用成员函数时,是在替某个对象调用它。当isbn指向bookNo时,其实是隐式的指向调用该函数的对象的成员(比如其调用的是total.bookNo);
成员函数通过一个名为this的额外的隐式参数来访问那个对象,当我们调用一个成员函数时,其实是用该对象的地址来初始化this;
比如total.isbn();实际是把total的地址传给了隐式形参this;即调用函数可改写为 Sales_data::isbn(&total);其传递的形参为&total而函数则用this接收,其后用this代替total这个对象调用其成员。
所以,在调用的成员函数中,我们可以直接的使用调用该函数的对象的成员,也无需通过在函数内部指定一个对象来调用其成员,因为this代替该对象,完成了对其的调用。
其实可以将第一句代码改为
std::string isbn() const {return this->bookNo; } //其实this形参,是隐式定义的,任何定义名为this的参数或变量都是非法的,其实并没用必要,显示的调用this。
因为this的目的总是指向某个特定的对象,所以this是一个指针常量,我们不能改变this中的保存地址。
this可以显示的作为返回值;比如
return *this;//就是返回调用该函数的对象;
2.类作用域和成员函数
类本身就是一个作用域,类的成员函数的定义镶嵌在类的作用域内,因此,bookNo其实就是定义在Sales_data内的数据成员。
编译器分两步处理类:首先编译成员的声明,然后才轮到成员函数。因此,成员函数可以随意的使用类中的其他成员而无需在一这些成员的出现次序。
若在类外定义成员函数就必须与类内的声明相匹配,类外部定义的成员名必须包含它的所属类名,比如
int Sales_data::avg_price() { return 0;} //函数名Sales_data::avg_price作用就是使编译器看到该函数名,就能理解剩余代码是位于类内的;
- 定义成员函数
- 定义成员函数
- 成员函数定义
- 如何定义成员函数?.
- 类内类外定义成员函数
- C++之类外定义成员函数、inline成员函数详解
- C++之类外定义成员函数、inline成员函数详解
- static 成员函数定义(必须的)
- C++普通成员函数的重定义
- 定义成员函数为回调函数
- C++成员函数指针定义和调用
- 7.21类外定义成员函数
- Time类的定义(成员函数)
- 模版类的成员函数定义问题
- 成员函数内定义static变量
- C++:如何声明和定义成员函数
- 4.1 类和成员函数的定义
- 类声明和成员函数定义分离
- 访谈: 从技术开发到核心管理的十年征途
- 《腾讯网UED体验设计之旅》
- Android分割线divider(内含Android虚线分割线失效成实线解决方案)
- 十、机器学习系统设计笔记之计算机视觉
- DataTable获取第一行和最后一行的数据
- 定义成员函数
- HashMap原理 冲突 拉链 开放地址
- web数据库设计过程
- Git使用教程3:MyEclipse+Egit+GitHub实现代码托管 【下】
- linux0.11 块设备驱动与高速缓冲区
- lazarus:一个函数修改目录名(文件夹名)
- 十一、机器学习系统设计笔记之对分类
- 从VCC,GND想到EMC
- PowerShell 异常处理(trap / try…catch / Throw / $Error / $ConfirmPreference)