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

  • FPSRussia

    FPSRussia

    19 NİSAN 2010
  • Fubar Protocol

    Fubar Protoc

    21 AĞUSTOS 2010
  • Migs351

    Migs351

    3 HAZİRAN 2007