C++类型转换 -- 由其他类型转换到自定义类型

由其他类型转换到自定义类型

由其他类型(如int,double)向自定义类的转换是由构造函数来实现,只有当类的定义和实现中提供了合适的构造函数,转换才能通过。

 1 /***********************main.c****************/
 2 #include <iostream.h>
 3 using namespace std;
 4 class  anotherPoint
 5 {
 6     private:
 7          double  x;
 8          double  y;
 9     public:
10          anthorPoint(double xx=1,double yy=1)
11         {
12              x =xx;
13              y = yy;
14         }
15        double  getX()
16        {
17             return x;
18        }
19        double getY()
20        {
21             return y;
22        }
23 };
24
25 class point
26 {
27     private:
28          int xPos;
29          int yPos;
30     public:
31          point(int x =0,int y = 0)
32          {
33              xPos  = x;
34              yPos  = y;
35          }
36          point(authorPoint sP)     //构造函数,参数为anthorPoint对象
37          {
38              xPos  = aP.getX();
39              yPos  = aP.getY();
40          }
41         void  print()
42         {
43              cout<<"(  "<<xPos<<"  ,  "<<yPos<<"  ,  "<<endl;
44         }
45 };
46
47 int main()
48 {
49     point p1;
50     p1 = 5;                //等价于p1 = point(5,0);
51     p1.print();
52     double dX = 1.2;
53     p1 = dX;              //等价于p1 = point(int(dX),0);
54     p1.print();
55
56     anthorPoint p2;
57     p1 = p2;              //等价于 p1 = point(p2);
58     p1.print();
59     return 0;
60 }

输出结果如下:

( 5 , 0 )
( 1 , 0 )
( 1 , 1 )

代码中第57行,构造函数“point(authorPoint aP)”被调用,先生成一个临时point类对象,再调用赋值运算符完成对p1的赋值。

隐式转换往往会出现一些意想不到的问题,使用关键字“explicit”可有效阻止隐式类型的转换,将36行改写为

explict   point(anthorPoint  aP)

那么57行语句就会被编译器认定为非法,必须使用显示转换

p1 = (point)p2;
时间: 2024-10-16 00:14:58

C++类型转换 -- 由其他类型转换到自定义类型的相关文章

[原创]java WEB学习笔记67:Struts2 学习之路-- 类型转换概述, 类型转换错误修改,如何自定义类型转换器

本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱好者,互联网技术发烧友 微博:伊直都在0221 QQ:951226918 -----------------------------------------------------------------------------------------------------------------

springmvc 自定义类型转换器

springmvc除了自带的部分类型转换之外,还可以自定义类型转换器,按照以下步骤: 1.写一个类实现Converter接口 package com.hy.springmvc.entities; import org.springframework.core.convert.converter.Converter; import com.google.gson.Gson; public class DepartmentConvertor implements Converter<String,

Struts2类型转换(二)-自定义类型转换器

一.自定义类型转换器 1). 为什么需要自定义的类型转换器 ? 因为Struts不能自动完成字符串到引用类型的转换. 2). 如何定义类型转换器? I. 开发类型转换器的类: 扩展 StrutsTypeConverter 类: II. 配置类型转换器. 有两种配置方式 ①. 基于字段的配置: > 在字段所在的 Model(可能是 Action,也可能是一个JavaBean) 的包下, 新建一个 ModelClassName-conversion.properties 文件 > 在该文件中输入键

sruts2 自定义类型转换器

1.1.1    Struts2中自定义类型转换器:(了解) 类型转换的过程是双向的过程: JSP---->Action参数提交:String---Date. Action---->JSP数据回显:Date---String. 自定义类型转换器: * 1.实现TypeConverter * convertValue(java.util.Map<java.lang.String,java.lang.Object> context, java.lang.Object target, j

struts2自定义类型转换器

首先,何为struts2的类型转换器? 类型转换器的作用是将请求中的字符串或字符串数组参数与action中的对象进行相互转换. 一.大部分时候,使用struts2提供的类型转换器以及OGNL类型转换机制即可满足大部分类型转换需求.如: 类User.java package models; public class User { private String username; private String password; public String getUsername() { retur

Struts2 自定义类型转换器

Struts2自定义类型转换器分为局部类型转换器和全局类型转换器 (1)局部类型转换器 如果页面传来一个参数reg.action?birthday=2010-11-12到后台action,然后属性 用date类型是可以接收到的,但是如果传的是20101112这样类型的字符串,用date类型是获取不到,并且会出现错误的,struts2提供了一 种类型转换器供我们使用. 以下为局部类型转换器的开发步骤a.首先要写一个类来继承DefaultTypeConverterb.然后覆盖convertValue

自定义类型转换器converter

作用:目前将日期转换成string,将string转换成我想要的类型   0509课件里讲 一.数据类型转换在web应用程序中,数据存在两个方向上的转换:1.当提交表单时  表单数据以字符串的形式提交给服务器,在服务器端转换成不同的Java数据类型 2.当需要在页面显示数据时  将不同的Java数据类型转换为对应的字符串格式显示输出 二.Struts2内置的类型转换Struts2内置了常用类型的自动转换功能,支持常见数据类型与字符串之间的转换 三.自定义类型转换1.编写自定义类型转换器,继承St

自定义类型转化

string num1 = "12"; string num2 = "13"; int num3; int num4 = 77; bool bo; num3 = int.Parse(Convert.ToString(num2)); bo = int.TryParse(Convert.ToString(num1), out num4); Console.Write(num3 +","+bo +","+num4 ); int.Tr

strut2 自定义类型转换器

描述:假设用户请求地址:http://xxx.action?date=2015-01-01.  假设action中已经存在了date属性,且类型为Date.当用户请求的参数格式为xxxx-xx-xx或者xxxx-x-x的时候,action可以正常的接收到日期类型,即string字符串可以自动转换为Date类型.但是当用户的请求为xxxxxxxx(20150101)的时候,action不能够转换为日期类型,且报错.这时候就需要自定义类型转换器来实现日期的转换. 问题解决:自定义类型转换器 新建立一