读书人

对于C语言部类间转换麻烦高人解释下

发布时间: 2013-07-16 22:38:05 作者: rapoo

对于C语言类型间转换,麻烦高人解释下
今天看以前的同事写了一个这样的代码


//quint32其实就是unsigned int,其定义在Qt的global.h
typedef quint32 CommonImageId;

qint32 strIndexGet(CommonImageId resId) {
return quint32(resId);
}


对于resId,其需要不需要转换?

如果不转换,貌似也没错,都是quint32类型。

但是如果转换,quint32(resId)这样是什么意思?我只知道强制类型转换是(quint32)resId。

希望有人能解释下 C typedef 类型转换 C++
[解决办法]
引用:
Quote: 引用:

相当于构造函数的写法, 比如 int(5) 之类的.

对于同类型的typedef,是不是这样做法比较好?
同类型间,因为typedef原因,造成类型不一样,是不是调整类型的时候都用这种方法?还是有其他的方法?
可以用强制类型转换么?(int)...


用类型转换也是一样的啊.
其实不转也无所谓, 只是这样代码清晰, 更好阅读.
而且以后如果把 CommonImageId 换成其它类型了的话, 对代码影响也最小.
[解决办法]
引用:
今天看以前的同事写了一个这样的代码

//quint32其实就是unsigned int,其定义在Qt的global.h
typedef quint32 CommonImageId;

qint32 strIndexGet(CommonImageId resId) {
return quint32(resId);
}


对于resId,其需要不需要转换?

如果不转换,貌似也没错,都是quint32类型。

但是如果转换,quint32(resId)这样是什么意思?我只知道强制类型转换是(quint32)resId。

希望有人能解释下

在这里你不应该将quint32(resId)看作类型转换,虽然它实际上在做类型转换的操作,但语义不同,作者就是想通过resld构造一个quint32而已。
此外,也不要对两者暂时的相同类型实现感到诧异,因为在其它实现中两者可以不同,作者在这里做了一层抽象,以支持更好的移植性。

读书人网 >C++

热点推荐