2010-11-16 26 views
33

C++’daki One Definition Kuralı tam olarak ne diyor? Bulabildiğim tek güvenilir nokta, C++ Programlama Dili, 3. ed., P. 9.2.3. Kuralın resmi bir tanımı var mı?C++ 'da Tam Tanım Kuralı nedir?

+0

: [tek çözünürlüklü kuralını ihlal standart kitaplığından bir işlevi yeniden tanımlıyor mu?] (Http://stackoverflow.com/q/41670800/514235) – iammilind

cevap

30

gerçeği standart (3.2 Tek tanım kuralı) içinde:

Hiçbir çeviri birimi herhangi bir değişkenin daha birden tanımını, fonksiyonunu, sınıf türünü, numaralandırma türü veya şablon içerecektir.

[...]

Her program olmayan her içi fonksiyonunun tam bir tanımını içeren veya programlamak kullanılan nesne eder; tanı gerekli değil. Tanım, programda açıkça görüntülenebilir, standardında veya kullanıcı tanımlı bir kitaplıkta veya (uygun olduğunda) örtülü olarak tanımlanmış olabilir (bkz. 12.1, 12.4 ve 12.8). satır içi işlevi, 'da kullanılan her çeviri biriminde olduğu tanımlanır. Kesinlikle ilişkili

+3

Ah, bundan biraz daha fazla. Aynı zamanda birden fazla çeviri birimi ile ilgilidir. Ve kural dışı istisnalar (bu konuda konuşmak biraz zor hale getirir!). Şerefe, –

+2

Gerçekten, tüm sayfayı alıntılamak zorundayım, bu yüzden gerekli olana gittim. – icecrime