EasyC++,类的实现

开发 后端
我们再回过头来看一下Stock这个类的定义,在类的定义当中,有一个叫做set_tot的函数。我们直接在类当中实现了逻辑。虽然同样是成员函数,但是在类当中直接实现的函数是有所区别的。在类声明当中实现的函数,会被视为是内联函数。

 [[439289]]

大家好,我是梁唐。

想要追求更好阅读体验的同学,可以点击「阅读原文」访问github仓库。

类的实现

当我们完成了类定义之后, 还需要来实现类当中的函数。

比如我们在stock00.h当中定义了一个类:

  1. #ifndef STOCK00_H_ 
  2. #define STOCK00_H_ 
  3.  
  4. #include <string> 
  5.  
  6. class Stock { 
  7.     private: 
  8.      std::string company; 
  9.      long shares; 
  10.      double share_val; 
  11.      double total_val; 
  12.      void set_tot() {total_val = shares * share_val;} 
  13.     public
  14.      void accquire(const std::string &co, long n, double pr); 
  15.      void buy(long num, double price); 
  16.      void sell(long num, double price); 
  17.      void update(double price); 
  18.      void show(); 
  19. }; 
  20. #endif 

成员函数

在这个定义当中,我们只是声明了函数,并没有具体实现函数的逻辑。

我们通常会在同名的cpp文件当中实现,实现的时候,需要使用作用域解析运算符来表示函数所属的类:

  1. void Stock::update(double price) { 
  2.     ... 

这样就表明了update函数所属Stock这个类,这也就意味着我们可以创建属于其他类的同名函数:

  1. void Buffoon::update() { 
  2.     ... 

其次,我们在成员函数当中,可以访问private限定的成员变量。比如说在show函数当中,我们可以这样实现:

  1. void Stock::show() { 
  2.     std::cout << company << shares << share_val << total_val << endl; 

虽然company,shares都是类的私有成员,但在成员方法当中,一样可以正常访问。

再次,我们在成员方法当中调用另外一个成员方法,可以不需要解析运算符。比如我们要在show函数内调用update函数,直接使用update()即可,而无需前面的Stock::。

内联函数

我们再回过头来看一下Stock这个类的定义,在类的定义当中,有一个叫做set_tot的函数。我们直接在类当中实现了逻辑。虽然同样是成员函数,但是在类当中直接实现的函数是有所区别的。在类声明当中实现的函数,会被视为是内联函数。

一般我们会把一些比较简短的函数在类的声明当中直接实现,当然我们也可以使用关键字inline,手动指定某个函数是内联的。

  1. class Stock { 
  2.     private: 
  3.     void set_tot(); 
  4.     public
  5.     ... 
  6. }; 
  7.  
  8. inline void Stock::set_tot() { 
  9.     total_val = shares * share_val; 

本文转载自微信公众号「Coder梁」,可以通过以下二维码关注。转载本文请联系Coder梁公众号。

 

 

责任编辑:武晓燕 来源: Coder梁
相关推荐

2021-12-12 18:13:54

C++This指针

2021-12-29 20:31:40

C++多态指针

2021-12-09 10:56:50

函数C++原型

2021-11-26 00:03:20

C++编译常量

2021-10-26 15:36:17

C++枚举值类型

2021-12-30 14:58:58

C++函数动态

2021-12-10 10:45:36

C++函数Stock

2021-10-26 00:19:51

C++结构体存储

2021-11-27 11:50:09

C++静态持续

2021-11-09 10:38:16

C++Const指针

2021-12-11 19:02:03

函数C++对象

2021-10-21 18:52:00

C++数组存储

2021-10-31 20:24:24

C++for循环

2021-11-10 10:48:36

C++函数指针

2021-12-15 10:25:57

C++运算符重载

2022-01-04 16:35:42

C++Protected关键字

2021-12-05 18:20:42

C++空间特性

2021-10-27 16:27:20

C++指针操控

2021-11-26 10:56:28

C++存储持续性

2021-12-26 00:08:35

C++初始化列表
点赞
收藏

51CTO技术栈公众号