小编T. *_*ley的帖子

在Unity中缩放GameObject

如何增加/减少Unity中对象的大小?

例:

public GameObject精灵;

公共浮动比例= 2.0f;

void ScaleResolution()

{

sprite = sprite*scale; //史诗串!

}

c# unity-game-engine unityscript

5
推荐指数
1
解决办法
3万
查看次数

为什么在析构函数中将虚拟表设置回该级别?

遵循这个问题 - 在大多数派生类的析构函数中进行纯虚拟调用 - 我尝试了一些代码来检查一些语法,并发现当调用过多的析构函数时,它们会调用它们相关的虚函数.考虑以下代码:

class Base
{
public:
virtual void Method() = 0;
};

class Derived :  public Base
{
public:
~Derived()
{
    Method();
}

virtual void Method()
{
    cout << "D";
}
};

class DoubleD : public Derived
{
public:

~DoubleD()
{
    Method();
}

virtual void Method()
{
    cout << "DD";
}
};

int main(array<System::String ^> ^args)
{
    DoubleD D;
    DoubleD E;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

正如预期的那样,当对象被破坏时,它会调用正确的方法(例如,首先是派生的最多,然后是派生的第二个).

输出:DD D.

我的问题是,为什么这有效?由于您不打算在c'tor/d'tor中调用虚函数,为什么虚拟表会正确"展开".

例如,我可以看到为什么导出最多的一个工作,这是虚拟函数指针表在启动时所处的状态.但是,为什么,当Derived调用析构函数时,表是否正确设置为指向该类的实现Method.

为什么不离开它,或者如果它很好,将值设置为NULL.

c++ virtual-functions

2
推荐指数
1
解决办法
1767
查看次数