c++代码赏析之类对象传參
#include <iostream>
using namespace std;
class A
{
private:
int x;
public:
A():x(0) { x = 0; cout << "construct" << endl; }
A(const A &a) { x = a.x; cout << "construct copy" << endl; }
~A(){ cout << "destruct" << endl; }
// A operator()(int rhs)
A& operator()(int rhs)
{
x += rhs;
return *this;
}
int getX()
{
return x;
}
};
void main()
{
{
A a;
cout << a(1)(2)(3).getX() << endl;
cout << a.getX() << endl;
}
}
本段代码展示的内容包含:
+ 引用传參
+ 类型对象传參
+ 重载操作符连续调用
在定义A& operator()(int rhs)函数类型声明的情况下,中间不会有新对象。每次操作的均是同一个对象,所以最后输出为:
而在定义A operator()(int rhs)函数类型声明的情况下。中间会产生新的匿名对象,而且自己主动调用的是拷贝构造函数,打印construct copy。
最后输出为
反复调用重载操作的技巧在于返回类型是原类型的引用。
这个技巧能够用来实现对路径的递归訪问,实现之前一篇博文的想法:http://blog.csdn.net/lonelyrains/article/details/45093007。
c++代码赏析之类对象传參的更多相关文章
- springMVC3.0(文件上传,@RequestMapping加參数,@SessionAttributes,@ModelAttribute,转发,重定向,数值获取,传參,ajax,拦截器)
1.项目包结构例如以下: watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdG90b3R1enVvcXVhbg==/font/5a6L5L2T/fontsiz ...
- jquery和highcharts折线图、柱形图、饼状图-模拟后台传參源代码
js代码: <script type="text/javascript"> $(function(){ showLine(); showColumn(); showPi ...
- 由PHP实现单向链表引发的对象赋值,对象传参,链表操作引发的一系列问题
2019年2月25日14:21:13 测试版本php 5.4 ,5.6,7.0,7.2 代码请看: https://www.cnblogs.com/zx-admin/p/10373866.html 1 ...
- Java的对象传参问题
在c/c++中对于传参类型,无外乎就是传值.传引用.传指针这几种.但在java中,由于没有指针类型,其传参的方式也发生了相应的变化.之前有搜过相关的知识点一直理解的是:Java的传参方式中主要有两种: ...
- 详解~实现Runnable方法创建线程之为什么要将Runnable接口的子类对象传递给Thread的构造函数
/** * @author zhao * @TIME 0419 22:56 End *定义线程的第二种方法:实现Runnable接口(不考虑安全问题) *步骤:1,定义一个子类实现Runnable接口 ...
- datasnap远程方法支持自定义对象传参
有同仁需要远程方法传输自定义的数据类型,他以为要自己写代码会很复杂,其实DATASNAP早就为我们想到了. datasnap的数据序列和还原真是无与伦比的强大,其远程方法支持自定义对象传参,DATAS ...
- 匿名类型 使用泛型T linq返回dynamic类型的匿名实体 如何把匿名类型.GetType()返回的对象传进泛型里面 EF实体查询出的数据List<T>转DataTable出现【DataSet 不支持 System.Nullable<>】的问题
[100分]紧急求助:LinQ下使用IQueryable<T>如何将返回类型<T>使用匿名类型 问题描述如下:我有一个方法如下:public IQueryable Dissen ...
- 关于C语言中二维数组传參————————【Badboy】
直接上代码: #include void Fun(int *a[],int m,int n)// { printf("%d\t",*a);//[0][0] /* int e[2][ ...
- STL算法设计理念 - 函数对象和函数对象当參数和返回值
函数对象: 重载函数调用操作符的类.其对象常称为函数对象(function object),即它们是行为类似函数的对象. 一个类对象,表现出一个函数的特征,就是通过"对象名+(參数列表)&q ...
随机推荐
- Dubbo 源代码分析八:再说 Provider 线程池被 EXHAUSTED
转自:http://manzhizhen.iteye.com/blog/2391177 在上回<Dubbo源代码实现六>中我们已经了解到,对于Dubbo集群中的Provider角色,有IO ...
- git命令使用(三)
git的使用--分支的使用 我们都知道拉取代码的时候,拉下来的是默认的分支,但我们需要的是,其他分支的使用操作 开始,拉取项目 git clone url 查看分支,显示默认分支 git branch ...
- luogu 5月月赛 #A
T29693 取石子 题目描述 Alice 和 Bob 在玩游戏 他们有 n 堆石子,第 i 堆石子有ai 个,保证初始时 ai≤ai+1(1≤i<n) . 现在他们轮流对这些石子进行操作 ...
- <Jenkins> 入门一
1.Continous integration 持续集成 2.Continous Delivery 持续交付 3.Java 写的
- NFS和DHCP服务
1. NFS NFS,Network File System的简写,即网络文件系统.网络文件系统是FreeBSD支持的文件系统中的一种,也被称为NFS: NFS允许一个系统在网络上与他人共享目录和文件 ...
- Linux test命令
test命令 长格式的例子: test "$A" == "$B" && echo "Strings are equal" t ...
- Django框架基础知识04-模板标签与模板继承
1.常用的模板标签 -作用是什么? -常用标签 总结:语法 {% tag %} {% endtag %} {% tag 参数 参数 %} 2.模板的继承与引用 -引用 include标签 -继承 ex ...
- LeetCode07--整数反转
''' 给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转. 示例 1: 输入: 123 输出: 321 示例 2: 输入: -123 输出: -321 示例 3: 输入: 120 ...
- httpclient调用webservice接口的方法实例
这几天在写webservice接口,其他的调用方式要生成客户端代码,比较麻烦,不够灵活,今天学习了一下httpclient调用ws的方式,感觉很实用,话不多说,上代码 http://testhcm.y ...
- zoj 1383 Binary Numbers
Binary Numbers Time Limit: 2 Seconds Memory Limit: 65536 KB Given a positive integer n, print o ...