多态势不是不是智能用指针 和引用实现,该怎么处理
多态势不是不是智能用指针 和引用实现
我定义2各类
class aa1:public aa
{
public:
void prin(){
cout < < "printlnaaaaaa ";
}
};
class b:public aa1
{
public:
void pri1n(){
cout < < "prinbbbbbbbbtln ";
}
};
只有通过
void sa1(aa &g)
{
g.prin();
}
void sa(aa *g)
{
g-> prin();
}调用才能实现多态 如果用
void sa1(aa g)
{
g.prin();
}
就布可以 请问为深莫
------解决方案--------------------
是
------解决方案--------------------
yes
------解决方案--------------------
是
------解决方案--------------------
如果是使用对象实例访问,
那么就是 显式访问成员方法,
访问结果只能是该对象类型的成员方法。
------解决方案--------------------
对于虚函数的动态调用,是通过首先拿到对象的this指针,然后再拿到虚表指针(VPTR),通过虚表指针拿到虚表,最终查询虚表找到相应的虚函数地址。所以如果直接用对象的话,对于虚函数的调用变成了静态调用,虚函数就没有表现出 "虚 "性。
------解决方案--------------------
ding
我定义2各类
class aa1:public aa
{
public:
void prin(){
cout < < "printlnaaaaaa ";
}
};
class b:public aa1
{
public:
void pri1n(){
cout < < "prinbbbbbbbbtln ";
}
};
只有通过
void sa1(aa &g)
{
g.prin();
}
void sa(aa *g)
{
g-> prin();
}调用才能实现多态 如果用
void sa1(aa g)
{
g.prin();
}
就布可以 请问为深莫
------解决方案--------------------
是
------解决方案--------------------
yes
------解决方案--------------------
是
------解决方案--------------------
如果是使用对象实例访问,
那么就是 显式访问成员方法,
访问结果只能是该对象类型的成员方法。
------解决方案--------------------
对于虚函数的动态调用,是通过首先拿到对象的this指针,然后再拿到虚表指针(VPTR),通过虚表指针拿到虚表,最终查询虚表找到相应的虚函数地址。所以如果直接用对象的话,对于虚函数的调用变成了静态调用,虚函数就没有表现出 "虚 "性。
------解决方案--------------------
ding