:コンストラクタを持っているか、初期化するコードを実行する必要があるC++の静的グローバルな非POD:理論と実践、私はQtのコーディング規則のドキュメントを読み、次の段落に出くわしました
何でも使用することができません(最初の使用時、ライブラリロード時、main()の前、またはでない場合は)、コンストラクタ/コードが実行されるときには定義されていないため、ライブラリコードのグローバルオブジェクトとして使用できます。共有ライブラリのイニシャライザの実行時間が定義されていても、そのコードをプラグインに移動するときや、ライブラリが静的にコンパイルされているときに問題が発生します。
私はtheoryのことを知っていますが、私は「全くありません」という部分を理解していません。時にはPOD以外のグローバル定数(QStringなど)を使用していて、初期化されていない可能性があります。これは共有オブジェクト/ DLL固有のものですか?これは壊れたコンパイラでのみ起こりますか?
このルールについてどう思いますか?
QStringは、使用しないと初期化されないことがあります。しかし、それらを使用すると、初期化されます。これが使用の直前(つまり、mthodがオブジェクトに対して呼び出される直前)であっても。 –