关于基类和派生类转换的有关问题

关于基类和派生类转换的问题!
C/C++ code
class a
{
  public:
  a();
  a(char *s)
  {strcpy(name,s);}
  void getname()
  {cout<<name<<endl;}
  private:
  char name[10];
}
class b:public a
{public:
  b(char *s)
  {strcpy(name,s);}
 void getname()
 {cout<<"b:"<<name<<endl;}
  private:
  char name[10];
}
void main()
{
  a aa("namea");
  a* pa;
  b bb("nameb");
  pa=&bb;
  (a)bb.getname();
  pa->getname();
  (b*pa)->getname();
}
请问 
  1:输出的结果是? 
  2:(a)bb.getname();这样的意思是要输出在派生类b中继承a的getname吧? 那么bb的地址是不是还是指向b的?
  3:pa=&bb;pa的地址已经指向bb了 为什么在调用bb函数的时候还要转换一下呢?
  4:(b)aa.getname();这句话是不是是错的?

谢谢!!!
 

------解决方案--------------------
bb的基类部分没初始化
------解决方案--------------------
C/C++ code
 
#include <iostream>
#include <vector>

using namespace std;

class a
{
public:
  a();
  a(char *s)
  {
    strcpy(name,s);
  }
  void getname()
  {
    cout < <name < <endl;
  }
private:
  char name[10];
};
class b :public a
{
public:
  b(char *s) : a(s)//此处用a(s) 而并不是a(*s) , 并且这样是拷贝基类部分的name
  {
    strcpy(name, s);//此处是赋值派生类的name 这样做的话基类和派生类的name内容一样
  }
  void getname()
  {
    cout < <"b:" < <name < <endl;
  }
private:
  char name[10];
};
int main()
{
  a aa("namea");
  a* pa;
  b bb("nameb");
  pa = &bb;
  ((a)bb).getname();//bb被强制转为a类型的对象 注意符号优先级
  pa->getname();//因为getname不是虚函数 所以是静态调用a::getname;
  ((b*) pa)->getname();//此处不安全 并注意符号优先级
  system("pause");
  return 0;
}


------解决方案--------------------
探讨
system("pause");

------解决方案--------------------
首先,LZ的代码有一点错误!
虽然pa=&bb;,但是它还是会调用a的函数,所以要转换一下。。