Local Class

あまり知られていませんが、関数内でもクラスを宣言することができます。例えば、こんな感じで↓

void func(){
	class Hoge{
	};
}

このクラスは、絶対に継承できません。なんで、これを使うと、c++でも、finalなクラスを作ることができそうです。例えば、こんな↓

struct Base{
};

Base* FinalClassCreate(){
	struct FinalClass : public Base{
	};

	return new FinalClass();
}

int main(){
	Base *b = FinalClassCreate();
}

参考:Modern C++ Design