类型转换

什么时候使用reinterpret_cast?

别来无恙 提交于 2020-02-28 06:51:38
我对 reinterpret_cast 和 static_cast 的适用性不感到困惑。 从我所读的内容中,一般规则是在编译时可以解释类型的情况下使用static强制转换,因此单词 static 。 这是C ++编译器内部也用于隐式强制转换的强制转换。 reinterpret_cast 适用于两种情况: 将整数类型转换为指针类型,反之亦然 将一种指针类型转换为另一种。 我得到的一般想法是,这是不可移植的,应该避免。 我有点困惑的是我需要的一种用法,我从C调用C ++,C代码需要保留在C ++对象上,因此基本上它包含 void* 。 应该使用哪种强制转换在 void * 和Class类型之间进行转换? 我看过 static_cast 和 reinterpret_cast 用法吗? 虽然从我所读的内容来看, static 似乎更好,因为强制转换可以在编译时进行? 尽管它说使用 reinterpret_cast 从一种指针类型转换为另一种指针类型? #1楼 template <class outType, class inType> outType safe_cast(inType pointer) { void* temp = static_cast<void*>(pointer); return static_cast<outType>(temp); }

Java--父子类之间的类型转换

穿精又带淫゛_ 提交于 2020-02-28 04:52:18
父类与子类之间的转换 子类转成父类 子类转成父类,即父类引用子类的实例化对象,没有限制条件。该对象只能调用父类的属性,可调用没被子类覆写的方法,若父类的某方法被子类覆写,该方法被调用时执行覆写后的程序。 父类转成子类 父类转成子类,即子类引用父类的实例化对象,只有当父类是由该子类转换而来,此父类才能再次转成该子类。该子类同平常子类继承父类一样使用。 父类与子类有相同属性 情况如下代码所示,则被覆写的方法调用的时子类的属性,没被调用的方法使用的是父类的属性 class Person{ String name = "long" ; int age; public void sleep() { System.out.println(this.name+"正在睡觉!"); } public void eat() { System.out.println(this.name+"正在吃饭!"); } } class Student extends Person{ String name = "wen"; public void sleep() { System.out.println(this.name+"正在床上睡觉!" ); } } public class Test { public static void main(String[] args) { Student student =

JavaScript 数据类型和类型转换

删除回忆录丶 提交于 2020-02-28 01:03:37
JavaScript 中有 6 种不同的数据类型: string(字符串) number(数字) boolean(布尔) object(对象) function(函数) symbol(ES6的数据类型之一) 有 3 种对象类型: Object(对象) Date(日期) Array(数组) 有 2 个不包含任何值的数据类型: null undefined 需要注意几个: NaN 的数据类型是 number 数组(Array)的数据类型是 object 日期(Date)的数据类型为 object null 的数据类型是 object 未定义变量的数据类型为 undefined constructor 属性 constructor 属性返回所有 JavaScript 变量的构造函数。 可以使用 constructor 属性来查看对象是否为数组 : 可以使用 constructor 属性来查看对象是否为日期 JS 类型转换 将数字转换为字符串 全局方法 String() 可以将数字转换为字符串。 此方法可用于任何类型的数字,字母,变量,表达式: Number 方法 toString() 也可以完成转换。 将布尔值转换为字符串 全局方法 String() 可以将布尔值转换为字符串。 Boolean 方法 toString() 也可以完成转换。 将日期转换为字符串 Date() 返回的是字符串

Java基础 学习笔记4

ぐ巨炮叔叔 提交于 2020-02-27 18:42:45
1.继承 继承是类与类的一种关系;Java中的继承是单继承,只有一个父类。 继承的好处:子类直接拥有父亲的所有属性和方法(private修饰的无效!),可实现代码复用。 语法规则: class 子类 extends 父类 eg:class Dog extends Animal{ … } 2.Java中的方法重写 如果子类对继承父类的方法不满意,是可以重写父类继承的方法的,当调用方法时会优先调用子类的方法。 语法规则:返回值类型,方法名,参数类型及个数都要与父类继承的方法相同,才叫方法的重写。 3.Java中的继承初始化顺序 a.初始化父类再初始化子类。(使用构造方法可以看出,虽然仅创建了子类的对象,但是先执行了父类的构造方法,之后才执行子类的构造方法)。 b.先执行初始化对象中的属性,再执行构造方法中的初始化。 4.Java中final的使用 final关键字: 表示“最终的”,即不可修改。 final可以修饰类、方法、属性和变量 a.修饰类:该类不允许被继承 b.修饰方法:该方法不允许被重写 c.修饰属性:则该属性不会进行隐式初始化(不会自动初始化,之前我们没有初始化都是系统帮我们自动初始化),需要手动初始化或者在构造方法中初始化 (但二者只能选一,即只能初始化一次后便不能更改) d.修饰变量,只能在声明的时候赋一次值,成为常量(static final 会使其成为全局常量)。

关于类型转换--C语言

不羁岁月 提交于 2020-02-27 03:03:15
#include <stdio.h> /** 类型转换 --在C语言中整型、实型和字符型三种数据可以进行类型转换而进行混合运算 --并不是所有的数据类型之间都可以进行类型转换,例如指针就不可以和这三种数据之间进行类型转换 --字符型数据和整型数据发生类型转换时,字符型必先转换为整数,C语言规定,字符型数据和整型数据之间可以通用,这也是下面把字符型和整型数据算作同一类型的依据 --short数据也是必先转为int型数据,他们同属于整型数据 --float数据在运算时一律转换为double类型,以提高运算精度 --不同类型的数据发生转换时,遵循低级类型向高级类型转换的规则, --int和double类型发生转换时,int类型转换为double类型再进行运算,结果为double类型 */ int main(void) { //定义和赋值变量 int a = 5; float b = 6.254894; double c = 9.254; char d = 'o'; double result; /** 同类型数据间进行运算并输出 -- 先解释一下char类型,char类型是整型数据之一,但是用来定义字符型变量; -- 整型和字符型相加,转换为整型,会把字符转换为ASCII值然后进行运算 -- 整型和字符型相加,转换为ASCII字元时,会把字符转换为ASCII值然后进行运算

Java类型转换报错java.lang.ClassCastException: com.sun.proxy.$Proxy7 cannot be cast to

岁酱吖の 提交于 2020-02-27 01:40:17
类型转换异常 java.lang.ClassCastException: com.sun.proxy.$Proxy7 cannot be cast to 这个错误的原因只有一个类型转换异常。 在一个子类实现父类的接口时,并且在强制转换时一定要使用父类的接口,否则就会报这个错误。 接口代码 package com.xxr.mapper; public interface UserMapper { void AddUser(); void SelectUser(); void DeleteUser(); void UpUser(); } 子类代码 package com.xxr.mapper.Impl; import com.xxr.mapper.UserMapper; public class UserImpl implements UserMapper { public void AddUser() { System.out.println("增加"); } public void SelectUser() { System.out.println("查询"); } public void DeleteUser() { System.out.println("删除"); } public void UpUser() { System.out.println("修改"); } }

C#调用C++ 类型转换

ⅰ亾dé卋堺 提交于 2020-02-26 11:48:29
Marshal 类 msdn: https://docs.microsoft.com/zh-cn/dotnet/api/system.runtime.interopservices.marshal?redirectedfrom=MSDN&view=netframework-4.8#methods csdn: https://blog.csdn.net/u011555996/article/details/103916426 常用转换: 字符串: // 创建一个托管字符串 string managedString = "I am a managed String"; // 将托管字符串复制到非托管内存 IntPtr stringPointer = (IntPtr)Marshal.StringToHGlobalAnsi(managedString); // 将非托管内存复制到托管字符串 string retrievedString = Marshal.PtrToStringAnsi(stringPointer); // 释放非托管内存 Marshal.FreeHGlobal(stringPointer); //在释放之前,还可以继续访问 string retrievedString2 = Marshal.PtrToStringAnsi(stringPointer); Task

强制类型转换

梦想与她 提交于 2020-02-26 11:42:06
类型转换主要指,将其他数据类型转换为(String、Number、Boolean) 类型转换有显式类型转换 和隐式类型转换 显式类型转换 1.1转换为string 调用数据的 toString() 方法 null和undefined 没有这个方法 1.2.调用String()函数,并将转换的数据作为参数传给函数 内部实际是调用了toString() 对于null和undefined就不调用toString(),它会将null直接转换为“null” a=String(undefined) "undefined" a=String(null) "null" 2.1转换为Number 使用Number()函数 var a="123"; a=Number(a); console.log(typeof a); //结果:number // 如果: var a="abc"; a=Number(a); console.log(a); // 结果:NaN 如果是纯数字的字符串,则直接转换为数字,如果字符串中有非数字的内容,则转换为NaN,如果字符串是一个空串或者是一个全是空格的字符串,则转换为0; Number(true)="1" Number(Null)=0 Number(undefined)="NaN" Number(false) = 0 2.2parseInt( string , radix

java中long类型转换为int类型

社会主义新天地 提交于 2020-02-26 07:27:49
由int类型转换为long类型是向上转换,可以直接进行隐式转换,但由long类型转换为int类型是向下转换,可能会出现数据溢出情况: 主要以下几种转换方法,供参考: 一、强制类型转换 [java] long ll = 300000; int ii = (int)ll; 二、调用intValue()方法 [java] long ll = 300000; int ii= new Long(ll).intValue(); 三、先把long转换成字符串String,然后在转行成Integer [java] long ll = 300000; int ii = Integer.parseInt(String.valueOf(ll)); 来源: https://www.cnblogs.com/mayhh/p/9440197.html

实体以及集合类型转换工具类

眉间皱痕 提交于 2020-02-25 16:11:05
在开发中经常会遇到,从数据库查出来的实体转换成对应的vo,下面就是一个小转换demo参考 public class TypeTransUtil { /** * 将entityList转换成modelList * @param fromList 来源list * @param tClass 目标类型 * @param <F> 集合元素类型 * @param <T> 目标元素类型 * @return 目标集合 */ public static<F,T> List<T> entityListToModelList(List<F> fromList, Class<T> tClass){ log.debug("entityListToModelList : List<Entity>属性的值赋值到List<Model>"); if(CollectionUtils.isEmpty(fromList)){ return null; } List<T> tList = new ArrayList<>(); for(F f : fromList){ T t = entityToModel(f, tClass); tList.add(t); } return tList; } /** * 将entity转换成model * @param entity 代转换实体 * @param modelClass