读书人

基础有关问题

发布时间: 2012-02-08 19:52:21 作者: rapoo

基础问题
C++基础不好,请各位高手指点一下:

例如:char *m_bLetter; //是定义一个指针

class A
{
}

class B
{
}

A *AObj;
B *BObj;
AObj = (A *)BObj; //强制类型转换

我想问的是强制类型转换直接(A)BObj不就可以了吗?干吗要(A *)Obj?

(A *)和char *定义指针有什么不同?


[解决办法]
学C#/Java出身的?
[解决办法]
(A)BObj 是转换为A 类型
(A*)BObj 是转换为A 指针类型
而你的BObj本身就是指针
[解决办法]
不可以的,要想强制类型转换(A)BObj,必须在类B中定义转换函数:
class B
{
public:
operator A();
};

B::operator A()
{}
否则编译报错。

A *表示指向类型为A的指针类型。
char *表示指向类型为char的指针类型
[解决办法]
为什么 AObj = (A *)BObj; 内存地址 = 强制转换后的指针?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
前一个内存地址是指向 B 类型的指针,后一个指向 A 类型的指针,这就是强制转化的目的
[解决办法]
http://vip2.6to23.com/zhuangaiping/

读书人网 >C++

热点推荐