(C++)类的定义(实现类成员函数)——详细讲解,举例子
2021/8/6 11:05:58
本文主要是介绍(C++)类的定义(实现类成员函数)——详细讲解,举例子,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
前面讲解了类的声明,现在我们讲解一下类的定义。
类的定义说简单点就是实现类成员函数,而成员函数定义与常规的函数定义非常相似,也需要有函数头和函数体,也可以有返回类型和参数。
有两个特殊的特征:
1、定义成员函数时,使用作用域解析运算符(::)来标识函数所属的类;
2、类方法可以访问类的private组件。
我们先来看成员函数的函数头使用作用域运算符解析(::)来指定函数所属的类。
eg:void Stock::update(double price)
意思是定义了update()函数是Stock类的成员。
这不仅标识update()为成员函数,而且我们可以将另一个类的成员函数也命名为update()。
eg:void Buffoon::update()
这是Buffoon类的update函数的函数头。
所以作用域解析运算符确定了方法的定义对应的身份。
举例子,上代码(对上一篇文章类声明的头文件中的public四个类成员进行定义)
#include <iostream> #include "stockoo.h" //上一篇文章的类声明的头文件 void Stock::acquire (const std::string & co, long n, double pr) { company = co; if (n < 0) { std::cout << "Number of shares can't be negative; " << cpmpany << " shares set to 0 ." << endl; shares = 0; } else shares = n; share_val = pr; set_tot(); } void Stock::buy (long num, double price) { if(num < 0) { std::cout << "Number of shares purchased can't be negative; " << "Transaction is aborted. " << endl; } else { share += num; share_val = price; set_tot(); } } void Stock::sell (long num, double price) { using namespace std; if(num < 0) { cout << "Number of shares purchased can't be negative; " << "Transaction is aborted. " << endl; } else if(num > shares) { cout << "You can't sell more than you have! " << "Transaction is aborted. " << endl; } else { share -= num; share_val = price; set_tot(); } } void Stock::show() { using namespace std; cout << "Company: " << company << endl; cout << "Shares: " << shares << endl; cout << "Share Price: $ " << share_val << endl; cout << "Total Worth: $ " << total_val << endl; }
注意:
我使用了内联函数,内联函数定义位于类声明中的函数都将自动称为内敛函数,因此我们的void set_tot(){total_val = shares * share_val;是一个内联函数。通常类声明将短小成员函数作为内联函数。
简单来说:
某一个函数的定义在函数声明中出现,这个函数就是内联函数。
也在类声明之外定义成员函数,并使其成为内联函数,使用关键字inline。
举个例子:
class Stock { private: ... void set_tot(); //只是作声明 public: ... }; inline void Stock::set_tot() //定义内联函数 { total_val = shares * share_val; }
这篇关于(C++)类的定义(实现类成员函数)——详细讲解,举例子的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-26怎么使用nsenter命令进入容器?-icode9专业技术文章分享
- 2024-12-26导入文件提示存在乱码,请确定使用的是UTF-8编码怎么解决?-icode9专业技术文章分享
- 2024-12-26csv文件怎么设置编码?-icode9专业技术文章分享
- 2024-12-25TypeScript基础知识详解
- 2024-12-25安卓NDK 是什么?-icode9专业技术文章分享
- 2024-12-25caddy 可以定义日志到 文件吗?-icode9专业技术文章分享
- 2024-12-25wordfence如何设置密码规则?-icode9专业技术文章分享
- 2024-12-25有哪些方法可以实现 DLL 文件路径的管理?-icode9专业技术文章分享
- 2024-12-25错误信息 "At least one element in the source array could not be cast down to the destination array-icode9专业技术文章分享
- 2024-12-25'flutter' 不是内部或外部命令,也不是可运行的程序 或批处理文件。错误信息提示什么意思?-icode9专业技术文章分享