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

  • Dom Esposito

    Dom Esposito

    26 Mayıs 2011
  • grickle

    grickle

    22 AĞUSTOS 2006
  • MotoManTV

    MotoManTV

    10 Aralık 2009