Forum: D Programlama Dili RSS
@disable Niteliği
canalpay (Moderatör) #1
Kullanıcı başlığı: Can Alpay Çiftçi
Üye Tem 2009 tarihinden beri · 1133 mesaj · Konum: İzmir
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Konu adı: @disable Niteliği
disable kelime anlamı olarak devre dışı anlamına geliyor. @disable ile imlenen bildirimlere başvurarak derleme zamanı hataya neden olur. disallow niteliği işlemlerde ve yüklemelerde çalışma zamanı üretilen hataya değil derleme zamanında üretilen hataya güvenildiğinde kullanılmalı.

Yani @disable ile işaretlenenler kullanılamıyor. Kullanılırsa derleme zamanı hata veriyor. Ancak yinede @disable ile kullanılan her şey söz dizimine uygun olmalı.

Yani daha tamamlamadığımız işlevlerde filan kullanmak için sanırım. Benim anladığım bu :-)

Örn:
struct T {
  @disable this(this) {} // devre dışı bırakılarak T'yı kopyalanamaz yaptı
}
 
struct S {
  T t;   // Kopyalanamaz üyesi S'yi ayrıca kopyalanamaz yapar.
}
 
@disable int a;
@disable void foo() { }
 
void main() {
  S s;
  if(a==a)  // hata, a devredışı
  S t = s;  // hata, S kopyalanamaz
  foo();   // hata, foo devredışı
}
acehreli (Moderatör) #2
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4527 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Ben bu ihtiyacı C++'tan biliyorum. Bazı türlerin nesnelerinin kopyalanmaları olanaksız veya anlamsız olabilir. Öyle durumlarda C++03'te uygulanan yöntem, kopyalayıcıyı ve atama işlecini private olarak bildirmek ama hiç tanımlamamaktır. (Biz de boost::noncopyable'ı kullanarak bu işi biraz daha otomatik hale getiriyoruz.)

C++11 bu ihtiyacı daha temiz biçimde karşılamak için = delete söz dizimini getirdi:

  http://en.wikipedia.org/wiki/C%2B%2B11#Explicitly_defaulte…

Ali
Doğrulama Kodu: VeriCode Lütfen resimde gördüğünüz doğrulama kodunu girin:
İfadeler: :-) ;-) :-D :-p :blush: :cool: :rolleyes: :huh: :-/ <_< :-( :'( :#: :scared: 8-( :nuts: :-O
Özel Karakterler:
Bağlı değilsiniz. · Şifremi unuttum · ÜYELİK
This board is powered by the Unclassified NewsBoard software, 20100516-dev, © 2003-10 by Yves Goergen
Şu an: 2017-11-18, 22:53:01 (UTC -08:00)