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

  • jeffisthecoolguy

    jeffisthecoo

    17 HAZİRAN 2013
  • bored before i even began

    bored before

    30 Mart 2009
  • thenewboston

    thenewboston

    4 ŞUBAT 2008