[英]nested classes in c++
我的問題是您在實踐中真正使用嵌套類的次數有多少次? 嵌套類的真正力量是什么?沒有它們怎么辦? PS請不要解釋它是什么,我知道( from technical point of view
)
我通常使用嵌套類將查找器對象 (與std::find_if
一起使用)嵌入到我的特定類型中。
就像是:
// Dummy example
class Foo
{
public:
class finder
{
public:
finder(int value) : m_value(value) {};
bool operator()(const Foo& foo) { return (foo.m_int_value == value); }
private:
int m_value;
};
private:
int m_int_value;
friend class finder;
};
然后:
vector<Foo> foo_list;
vector<Foo>::iterator foo =
std::find_if(foo_list.begin(), foo_list.end(), Foo::finder(4));
這當然可以在不使用嵌套類的情況下完成。 但是我發現它很優雅,因為查找器在類定義之外沒有用:
如果我曾經在代碼重構的情況下刪除了該類,那么查找程序也應該刪除。
由於以下原因,我很少使用它們:
有時我使用嵌入式結構(對於POD,沒有方法)。
當類需要包含分組/封裝的數據時,它們很有用。 您可以將它們全部設計成private
嵌套類,以防止外界無意中使用數據類型。
它也可以用作達成友誼的一種更清晰的方式。 通過嵌套類而不是使用友誼,您可以進一步封裝代碼部分之間的friend
關系。
我將它們用作需要訪問我的類的實用程序類:信號處理程序,計時器,尤其是在使用pimpl時,因此實現已在cpp文件中。
在C ++中,沒有嵌套類是無法完成的,但是這是一種很好的方式來限制這些類,這些類主要只是將事件分發給我的類。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.