次の定義を含むヘッダー ファイルがあります。
const std::string error[] = {"a", "b"};
現在、このファイルを 2 つの異なる翻訳単位に含めて、ソース コードをコンパイルしています。すべてが機能しますが、なぜですか?これは壊れると予想されone definition rule
ます。
さらに興味深いことに、タイプを変更しています
const char* error[] = {"a", "b"};
これが予想されるエラーです
multiple definition of `error'
int
、char
、short
およびその他の整数型のstd::string と同じように機能します。これは何ですか?