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

  • akalyne

    akalyne

    13 Mayıs 2009
  • Boiler Room

    Boiler Room

    10 Mayıs 2012
  • mist64

    mist64

    30 Mayıs 2006