2010-09-13 23 views
7

Bu iki garip kod satırı ne anlama geliyor?"= Sil" nedir?

thread_guard(thread_guard const&) = delete; 

thread_guard& operator=(thread_guard const&) = delete; 

cevap

11

=delete, C++ 0x'un yeni bir özelliğidir. Bu derleyici derhal derhal derhal durdurmak ve "Bu işlev silindi", kullanıcı böyle bir işlev kullandıktan sonra (Ayrıca bakınız:Bjarne Stroustrup tarafından C++ 0x SSS).

thread_guard(thread_guard const&) bir kopya oluşturucusudur ve thread_guard& operator=(thread_guard const&) bir atama yapıcısıdır. Bu iki satır birlikte, bu nedenle thread_guard örneklerinin kopyalanmasını devre dışı bırakır.

+1

Neredeyse. Silinmiş bir fonksiyonun (örneğin, "decltype" ifadesinin ifadesi olarak), silinmemiş bir işlevin "kullanımı", şablon argümanı kesinti kesintisi olarak nitelendirilebilir. Bu, bir derleyicinin bir şablonu görmezden gelmesini sağlar. Derleyicinin derlenmesini engeller. – sellibitze

10

Yeni C++ sınıfının bazı fonksiyonları devre dışı bırakılması için 0x sözdizimi. Örnek için bkz wikipedia. Burada, thread_guard sınıfının ne kopyalanabilir ne de atanabilir olduğunu söylüyorsunuz.

+0

Diğer işlevler için de çalışıyor. – sellibitze