2

C++での動的リンクに関するこの記事を見つけました。

関心のあるクラスのオブジェクトを返す C++ ファクトリを作成できます。また、ファクトリのファイル スコープに静的オブジェクトを作成して、 を使用して配置できるようにする必要がありますdlsym()。(この記事では、静的オブジェクトは名前がマングルされていないことを示唆しています。)

静的オブジェクトの名前がマングルされないのはなぜですか?

4

1 に答える 1

5

名前マングリングは、オーバーロードされた関数名の解決を支援するために考案されました。パラメータの数と型が異なるだけで、同じ名前の複数の関数を定義できます。名前マングリングにより、リンカーはそのような関数をコード内の正しい場所に解決できます。

関数の名前とは異なり、グローバル名前空間の静的オブジェクトの名前はオーバーロードできないため、それらをマングルする必要はありません。実際、グローバル名前空間の外にあるオブジェクトの名前はマングルされています。

于 2012-09-30T22:46:57.200 に答える