SORU
6 Mayıs 2010, PERŞEMBE


Sabit bir referans geçici ömrünü uzatmak mı?

Neden bunu yapar:

#include <string>
#include <iostream>
using namespace std;

class Sandbox
{
public:
    Sandbox(const string& n) : member(n) {}
    const string& member;
};

int main()
{
    Sandbox sandbox(string("four"));
    cout << "The answer is: " << sandbox.member << endl;
    return 0;
}

Çıkış ver:

Cevap:

Yerine:

Cevap: dört

CEVAP
6 Mayıs 2010, PERŞEMBE


Sadeceyerelconst ömrünü uzatmak başvuruyor.

Standart §8.5.3/5, [MALZEME.bu tarz bir davranışı belirtir ınit.ilan no] referans bildirimleri başlatıcılar ile ilgili bölümü. Örnek başvuru yapıcı bir yaklaşım n bağlı n bağlı olduğu nesne kapsam dışına çıktığında geçersiz olur.

Ömrü uzatma fonksiyonu bir argüman üzerinden değil geçişli. §12.2/5 [sınıf.geçici]:

İkinci bir bağlam referans geçici bağlıdır. Hangi referansı bağlı geçici ya da geçici bağlı bir sınıfın tam nesnesi geçici aşağıda belirtilen durumlar dışında başvuru süresi boyunca devam eder. Geçici bir kurucu referans üye bağlı decimal-başlatıcı (§12.6.2 [sınıf.taban.init]) yapıcı çıkar kadar devam eder. Bir işlev çağrısı başvuru parametresi bağlı (§5.2.2 [ifade ile bir geçici çağrı]) çağrısı içeren. tam ifade tamamlanmasına kadar devam

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Fullscreen

    Fullscreen

    23 Mart 2006
  • hitcreatormusic2

    hitcreatormu

    21 Mayıs 2010
  • LAHWF

    LAHWF

    5 Kasım 2009