C++学习七 C++实现add(1)(2)(3)
一、代码实现:
class Yoba
{
public:
Yoba(int n) : _n(n) {}
Yoba operator() (int n) { return Yoba(_n + n); }
bool operator== (int n) { return _n == n; }
int operator+ (int n) { return _n + n; }
int operator- (int n) { return _n - n; }
friend bool operator== (int n, const Yoba & y) { return n == y._n; } private:
int _n;
}; auto add(int n)
{
return Yoba(n);
}
这里对于对于功能实现add(1)(2)(3), 这里用到了()符号的重载。
二、这里对于类的实现做一些讲解:
这里有一个例子:
class CountPeople
{
public:
//构造函数
CountPeople() :number(), _size(), T()
{
cout << "number of the C is " << number << endl;
}
//析构函数
~CountPeople()
{}
//初始化参数列表的结构
CountPeople(int n) :number(n)
{
cout << "number is "<<number<<endl;
}
//方法接口,operator 重载操作符()
CountPeople operator() (int n)
{
return CountPeople(number + n);
}
int operator+ (int n)
{
return number + n;
}
friend bool operator== (const CountPeople& y,int n ) { return n == y.number; }
// bool operator== (int n) { return n == number; }
int GetNumber();
int GetSize();
private:
int _size;
int number;
int T;
};
上面是一个类的结构。
对于一些方法,可以在类的外部实现。
int CountPeople::GetNumber()
{
return number;
}
int CountPeople::GetSize()
{
return _size;
}
一个类的结构:
构造函数
析构函数
私有变量
方法。
三、如果需要将类不放在main里面,那么在cpp里面的分布为:
| cpp | main.cpp | usage.cpp | usage.hpp |
| 内容 |
#include "usage.hpp" int main(void) { return 0; } |
类的方法具体内容 | 类的定义 |
具体分布如下:



四、CountPeople(1)(3)的调用过程
先是调用CountPeople(1)
然后调用()重载函数
再调用CountPeople(3)
C++学习七 C++实现add(1)(2)(3)的更多相关文章
- MyBatis学习七:spring和MyBatis整合
<\mybatis\day02\16mybatis和spring整合-sqlSessionFactory配置.avi;> MyBatis学习七:spring和MyBatis整合.逆向工程 ...
- SVG 学习<七> SVG的路径——path(1)直线命令、弧线命令
目录 SVG 学习<一>基础图形及线段 SVG 学习<二>进阶 SVG世界,视野,视窗 stroke属性 svg分组 SVG 学习<三>渐变 SVG 学习<四 ...
- day 85 Vue学习七之vue-cookie
Vue学习七之vue-cookie 通过vue如何操作cookie呢 参考链接:https://www.jianshu.com/p/535b53989b39 第一步:安装vue-cookies ...
- (转)MyBatis框架的学习(七)——MyBatis逆向工程自动生成代码
http://blog.csdn.net/yerenyuan_pku/article/details/71909325 什么是逆向工程 MyBatis的一个主要的特点就是需要程序员自己编写sql,那么 ...
- Android 学习笔记之AndBase框架学习(七) SlidingMenu滑动菜单的实现
PS:努力的往前飞..再累也无所谓.. 学习内容: 1.使用SlidingMenu实现滑动菜单.. SlidingMenu滑动菜单..滑动菜单在绝大多数app中也是存在的..非常的实用..Gith ...
- MySql学习(七) —— 查询性能优化 深入理解MySql如何执行查询
本篇深入了解查询优化和服务器的内部机制,了解MySql如何执行特定查询,从中也可以知道如何更改查询执行计划,当我们深入理解MySql如何真正地执行查询,明白高效和低效的真正含义,在实际应用中就能扬长避 ...
- Linux 学习 (七) 挂载命令 & 用户登陆查看
Linux达人养成计划 I 学习笔记 挂载命令 mount:查询系统中已经挂载的设备 mount -a:根据配置文件 /etc/fstab 的内容,自动挂载 mount [-t 文件系统] [-o 特 ...
- Python3.5 学习七
心灵鸡汤 好书推荐:消费者行为学.围城.活着.盲井.三体.北京折叠 静态方法: @staticmethod #名义上归类管,和类没什么关系,只是引用用"." 在静态方法中,无法访问 ...
- 侯捷STL学习(七)--深度探索vector&&array
layout: post title: 侯捷STL学习(七) date: 2017-06-13 tag: 侯捷STL --- 第十六节 深度探索vector vector源码剖析 vector内存2倍 ...
随机推荐
- python获取指定文件夹下的文件和文件夹
import os filepaths = []; dirpaths = []; pathName = r'C:\anfei\json\20191128' for root, dirs, files ...
- 解决brew update很慢
一般遇到这种问题,就跟墙有关啦,需要更换源. 用清华的源就非常好,去清华镜像的官网看一下说明,https://mirrors.tuna.tsinghua.edu.cn/help/homebrew/ $ ...
- 监控redis命令 - monitor
有时候我们需要知道客户端对redis服务端做了哪些命令操作.我们可以试用monitor命令来查看.它能清楚的看到客户端在什么时间点执行了那些命令. MONITOR 是一个调试命令,每个命令流回来的re ...
- centos7.6 安装Mysql5.7
#安装Mysqlwget http://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.rpmyum localinstall mys ...
- SPA项目开发之首页导航左侧菜单栏
1. Mock.js 前后端分离开发开发过程当中,经常会遇到以下几个尴尬的场景: 1. 老大,接口文档还没输出,我的好多活干不下去啊! 2. 后端小哥,接口写好了没,我要测试啊! 前后端分离之后,前端 ...
- 定义私有指令 v-fontweight
// 这是一个私有的指令 他是在vm这个实例对象里里面的 所以说是私有的 directives 多一个s // 在css中是font-Weight.在第二个字母的大写该为小写,去掉横线. // 这中写 ...
- 9. java API使用 - Scanner类
一.API概述和使用 1. 概述 API(应用程序编程接口).Java API是一本程序员字典,是JDK提供给我们使用的类的说明文档.这些类将底层的代码实现封装了起来,我们不需要关心这些类是如何实 ...
- python包matplotlib绘制图像
使用matplotlib绘制图像 import matplotlib.pyplot as plt from matplotlib.pyplot import MultipleLocator impor ...
- 如何在python中使用Elasticsearch
什么是 Elasticsearch 想查数据就免不了搜索,搜索就离不开搜索引擎,百度.谷歌都是一个非常庞大复杂的搜索引擎,他们几乎索引了互联网上开放的所有网页和数据.然而对于我们自己的业务数据来说 ...
- codeforces 1260C. Infinite Fence (数学or裴蜀定理)
只需要验证小间隔在大间隔之间有没有连续的k个 设小间隔为a,大间隔为b,那么a在b之间出现的次数在\(\lfloor \frac{b}{a}\rfloor\)或者\(\lfloor \frac{b}{ ...