C++自动类型转化--特殊构造函数方法和重载的运算符方法
一、重载运算符法
#include <stdio.h>
#include <iostream> class Three
{
int i;
public:
Three(int ii = , int = ) : i(ii)
{
std::cout << "you call Three()" << std::endl;
}
}; class Four
{
int x;
public:
Four(int xx) : x(xx) {}
operator Three() const { return Three(x);}
}; void g(Three) {}
int main()
{
Four four();
g(four);
g();//calls Three(1,0)
int n;
std::cin >> n;
}
//输出两次:
you call Three()
2.构造函数转换
//这个构造函数能够把另一类型的对象(引用)作为它的单个参数,那么构造函数允许编译器执行自动类型转换;
#include <stdio.h>
#include <iostream> class One
{
public:
One() {}
}; class Two
{
public:
Two(const One&)
{
std::cout << "you call Two()" << std::endl;
}
}; void f(Two) {} int main()
{
One one;
f(one);//wants a Two ,has a one
//输出:"you call Two()”
int i;
std::cin >> i;
}
注意:以上方法调用了Two的隐藏的构造函数,如果关心调用效率的话不要这样使用!
3.阻止构造函数被隐式调用,要求必须显示调用:
//使用关键词explicit时,必须显示调用,完成类型转换
#include <stdio.h>
#include <iostream> using namespace std; class One
{
public:
One() { }
}; class Two
{
public:
explicit Two(const One&) {}
}; void f(Two) {} int main()
{
One one;
//!f(one);//NO auto conversion allowed
f(Two(one)); //int i;
//cin >> i;
}
C++自动类型转化--特殊构造函数方法和重载的运算符方法的更多相关文章
- 040_字符串连接符 041_条件运算符目 042_运算符优先级_逻辑与或优先问题 043_自动类型转化 044_强制类型转换 045_基本类型常见错误_溢出_L问题
		040_字符串连接符 package test_package; /** * 字符串运算符 * @author * */public class TestOperator05 { public sta ... 
- Java中byte、short、char、int、long运算时自动类型转化问题
		-------------------------------------------------------------------------------------------------- ★ ... 
- 重载 CreateParams 方法[2]: 重载 TForm.CreateParams 方法的几个例子
		这里有所有相关参数的解释: http://www.cnblogs.com/del/archive/2008/04/15/1154359.html //最大化窗口 procedure TForm1.Cr ... 
- C++中的显式类型转化
		类型转化也许大家并不陌生,int i; float j; j = (float)i; i = (int)j; 像这样的显式转化其实很常见,强制类型转换可能会丢失部分数据,所以如果不加(int)做强制转 ... 
- Spring mvc @initBinder 类型转化器的使用
		一.单日期格式 因为是用注解完完成的后台访问,所以必须在大配置中配置包扫描器: 1.applicactionContext.xml <?xml version="1.0" e ... 
- .NET 基础 一步步 一幕幕[面向对象之方法、方法的重载、方法的重写、方法的递归]
		方法.方法的重载.方法的重写.方法的递归 方法: 将一堆代码进行重用的一种机制. 语法: [访问修饰符] 返回类型 <方法名>(参数列表){ 方法主体: } 返回值类型:如果不需要写返回值 ... 
- java方法的重载
		java方法的重载 public class Person1 { private String name; //姓名 private int age; //年龄 priva ... 
- Java方法多态性——方法的重载Overload和重写Override
		方法的重写(Overriding)和重载(Overloading)是java多态性的不同表现,重写是父类与子类之间多态性的一种表现,重载可以理解成多态的具体表现形式. 重写(Override) 重写是 ... 
- C#类的继承,方法的重载和覆写
		在网易云课堂上看到唐大仕老师讲解的关于类的继承.方法的重载和覆写的一段代码,注释比较详细,在此记下以加深理解. 小总结: 1.类的继承:允许的实例化方式:Student t=new Student() ... 
随机推荐
- Cannot uninstall 'html5lib'. It is a distutils installed project and thus we cannot accurately determine which files belong to it which would lead to only a partial uninstall.
			如标题,安装Tensorflow-gpu时遇到的完整问题 Cannot uninstall 'html5lib'. It is a distutils installed project and th ... 
- Just Oj 2017C语言程序设计竞赛高级组A: 求近似值(矩阵快速幂)
			A: 求近似值 时间限制: 1 s 内存限制: 128 MB 提交 我的状态 题目描述 求⌊(5–√+6–√)2n⌋⌊(5+6)2n⌋%9932017. 例如:n=1,(5–√+6–√)2( ... 
- jquery轻量级数字动画插件jquery.countup.js
			插件描述: jquery.countup.js 是一款轻量级jquery数字动画插件.该数字动画插件可以在页面滚动时,将指定的数字从0开始计数增加动画. 插件说明 jquery.countup.js ... 
- ThreadPool线程池
			1.GetMaxThreads,GetMinThreads class Program { static void Main(string[] args) { int workerThreads; i ... 
- BZOJ3156 防御准备 动态规划 斜率优化
			原文链接http://www.cnblogs.com/zhouzhendong/p/8688187.html 题目传送门 - BZOJ3156 题意 长为$n$的序列$A$划分,设某一段为$[i,j] ... 
- 总结几种清除浏览器的缓存,适用于明明已经修改bug,但是测试人员说问题还存在的情况下
			1.meta方法<METAHTTP-EQUIV="pragma"CONTENT="no-cache"><METAHTTP-EQUIV=&quo ... 
- scrapy response.xpath可以提取包含字符XX的标签
			1. 筛选属性包含某字符串的标签(如id = 'bigbaong' 查询包含'big'字符的就可以筛选到) res = response.xpath("//a[contains(@id, ... 
- python 精确计算与向上取整 decimal  math.ceil
			1. 精确计算 python的float型不精确,需要导入decimal包,以下是不精确举例: 导入decimal包后: 2. 向上取整 一般的取整数(向下取整): 向上取整的方法: 
- 初窥Java之四
			一.条件判断之if判断 语法格式:if(结果为布尔类型的结果值){ 功能执行语句; }else if(结果为布尔类型的结果值){ 功能执行语句; } ....{ }else{ 功能执行语句: } 注意 ... 
- rem+media+jquery布局结局方案
			; ; } ? ; + 'px'; } document.addEventListener('DOMContentLoaded', callback); window.addEventListener ... 
