我想了解一塊C++代碼,我已經到了一個地步,我不明白以下的含義:函數原型的常量參數
以下是在函數原型文件中定義的,又名(.H)
我什麼困惑一下,是常量的參數:
ofMesh getImageMesh() const;
我的意思是,函數/方法返回一個類ofMesh的,getImageMesh()沒有參數和 然後常量如下。爲什麼像這樣使用「const」?
我想了解一塊C++代碼,我已經到了一個地步,我不明白以下的含義:函數原型的常量參數
以下是在函數原型文件中定義的,又名(.H)
我什麼困惑一下,是常量的參數:
ofMesh getImageMesh() const;
我的意思是,函數/方法返回一個類ofMesh的,getImageMesh()沒有參數和 然後常量如下。爲什麼像這樣使用「const」?
這是一個const
方法,這意味着你可以調用它const
的對象,也不會改變非mutable
成員,也不會調用其他非const
方法。
struct X
{
void foo();
int x;
void goo() const;
};
void X::goo() const
{
x = 3; //illegal
foo(); //illegal
}
//...
const X x;
x.foo(); //illegal
x.goo(); //OKAY
基本上,這意味着該方法不會修改該類的實例的狀態。這意味着它也不會調用會改變類實例狀態的其他成員。
OK:
class Foo
{
int m_foo;
int GetFoo() const
{
return m_foo;
}
}
編譯錯誤:
class Foo
{
int m_foo;
int GetFoo() const
{
m_foo += 1;
return m_foo;
}
}
還有更深層次的考慮,如性能優勢通過引用傳遞的時候 - 如果你想要去更深,搜索的術語'const正確性'。
此行中的const
表示它是一個常量函數。這意味着它不能修改它裏面的對象。
因此,如果您聲明瞭成員函數const
,那麼您告訴編譯器可以爲const對象調用該函數。沒有明確聲明const
的成員函數被視爲將修改對象中的數據成員的成員函數,編譯器將不允許您將其稱爲const
對象。
http://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list?rq=1 –