在这里进行什么类型的演员表演B::get()?
class A {
public:
A() : a(0) {}
int a;
};
class B : public A {
public:
A* get() {
return this; //is this C-style cast?
}
};
int main()
{
B b;
cout << b.get()->a << "\n";
system("pause");
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我在着名的API中看到过这种代码.这是更好的做法static_cast<A*>(this);吗?
Tar*_*ama 10
这是标准的派生到基指针转换.规则是指向D某些const/ volatile资格的指针可以转换为指向B具有相同限定符的指针(如果B是基类)D.
标准转换是具有内置含义的隐式转换,并且与诸如static_castC风格的转换之类的事物是分开的概念.
通常情况下,最好尽可能依赖隐式转换.显式转换会增加更多代码噪音,并可能隐藏一些维护错误.
| 归档时间: |
|
| 查看次数: |
4601 次 |
| 最近记录: |