当前位置:  开发笔记 > 编程语言 > 正文

将派生类转换为基础

如何解决《将派生类转换为基础》经验,为你挑选了1个好方法。

在这里进行什么类型的演员表演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;
}

我在着名的API中看到过这种代码.这是更好的做法static_cast(this);吗?



1> TartanLlama..:

这是标准的派生到基指针转换.规则是指向D某些const/ volatile资格的指针可以转换为指向B具有相同限定符的指针(如果B是基类)D.

标准转换是具有内置含义的隐式转换,并且与诸如static_castC风格的转换之类的事物是分开的概念.

通常情况下,最好尽可能依赖隐式转换.显式转换会增加更多代码噪音,并可能隐藏一些维护错误.


我建议特别回答他的问题:"不,使用`static_cast`不是更好的做法 - 事实上,这是更糟糕的做法.如果你不需要它们,总是避免演员."
推荐阅读
360691894_8a5c48
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有