使用一个优于另一个是否有任何优势:
class Foo
{
public:
const int& get() const
{
// stuff here
return myInt;
}
int& get()
{
return const_cast<int&>(static_cast<const Foo*>(this)->get());
}
};
Run Code Online (Sandbox Code Playgroud)
要么
class Foo
{
public:
int& get()
{
// stuff here
return myInt;
}
const int& get() const
{
return const_cast<Foo*>(this)->get();
}
};
Run Code Online (Sandbox Code Playgroud)
我只使用了第一个,但我刚看到第二个用在某个地方,所以我很想知道.
注释// stuff here可能是一个非平凡的检查,如检索表的索引,以便返回表的成员的引用(例如:),myInt = myTable[myComputedIndex];所以我不能只是公开它.因此,表和任何成员都不是const.
我查看了互联网上的问题,但找不到任何答案,所以我在这里.
指定从纯虚拟派生的函数的覆盖是否正确:
class baseClass
{
public:
virtual void myFunction() = 0;
}
class derivedClass : public baseClass
{
public:
virtual void myFunction() override;
}
Run Code Online (Sandbox Code Playgroud)
它是否正确?
我的第二个问题是:我是否必须在derivedClass中为我的函数指定virtual,即使没有类将从我的派生类继承(它将是最终的)?
非常感谢您的回答!
我将确定我的问题,我有一个2D物体在2D世界(X,Y)中移动,我想在Z轴上伪造一个运动.所以我认为最好的方法是使用它的范围(宽度,高度)和位置.但是,确定尺寸(w,h)物体的新范围以及从相机向前移动1米(Z轴)的等式是什么?这样一个函数的参数是什么?
在此先感谢您的帮助.