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倍 ...
随机推荐
- s3c2440裸机-UART编程(一、UART硬件介绍及传输原理)
1.uart硬件介绍 UART的全称是Universal Asynchronous Receiver and Transmitter(异步收发器). uart主要用于: 1.打印调试 2.数据传输 串 ...
- 2019 SDN上机第5次作业
2019 SDN上机第5次作业 1.浏览RYU官网学习RYU控制器的安装和RYU开发入门教程,提交你对于教程代码的理解,包括但不限于: 描述官方教程实现了一个什么样的交换机功能? 答:官方教程实现了一 ...
- cartographer 3D运行录制rosbag包
目录: 1.运行多线激光雷达: 2.运行IMU: 3.录制rosbag包: 4.配置cartographer: 5.查看地图: 1.运行多线激光雷达: 主要是测试雷达是否正在运行,确认雷达点云topi ...
- ROS kinetic + Realsens D435i + ORK + LINEMOD 物体识别
1. ORK 网址:https://wg-perception.github.io/object_recognition_core/ ORK (Object Recognition Kitchen) ...
- MNIST 例程源码分析 TensorFlow 从入门到精通
按照上节步骤, TensorFlow 默认安装在 /usr/lib/python/site-packages/tensorflow/ (也有可能是 /usr/local/lib……)下,查看目录结构: ...
- LeetCode 705:设计哈希集合 Design HashSet
题目: 不使用任何内建的哈希表库设计一个哈希集合 具体地说,你的设计应该包含以下的功能 add(value):向哈希集合中插入一个值. contains(value) :返回哈希集合中是否存在这个值. ...
- 【Linux命令】ldconfig动态链接库管理命令
ldconfig动态链接库管理命令,其目的为了让动态链接库为系统所共享. 作用: 默认搜寻/lilb和/usr/lib,以及配置文件/etc/ld.so.conf内所列的目录下的库文件. 搜索出可共享 ...
- vscode开发微信小程序使用less(插件Easy WXLESS)
1.搜索按照Easy WXLESS 2.在文件中加入下面的一行代码:就会在同级目录下同步代码到.wss // out: index.wxss 更多的写法可以查官网:https://marketplac ...
- Linux中Swap与Memory内存简单介绍
1.背景介绍 这篇文章介绍一下Linux中swap与memory.对于memory没什么可说的就是机器的物理内存,读写速度低于cpu一个量级,但是高于磁盘不止一个量级.所以,程序和数据如果在内存的 ...
- MySQL for OPS 10:MyCAT 分布式架构
写在前面的话 在学习的索引的时候,有提到,当数据表数据达到 800W 的时候,索引的性能就开始逐步下降.对于一个公司而言,主要业务数据表达到 1000W 都很容易.同时这张表一般都是业务常用的表,操作 ...