SORU
11 Mart 2010, PERŞEMBE


Zor görüşme için konu C

Aşağıda kodu verilen, nasıl/SR oluşturmak istiyorsunuz.h çözüm içinde herhangi bir yıldız OLMADAN doğru çıktı üretir?

Bu soru ile hayal kırıklığına uğramış aldım. İnsanlar bu sorun için kullanılacak farklı yaklaşımların bazı bilmek istiyorum.

#include <cstdio>
#include "SR.h"

int main()
{
    int j = 5;
    int a[] = {10, 15};
    {
        SR x(j), y(a[0]), z(a[1]);

        j = a[0];
        a[0] = a[1];
        a[1] = j;

        printf("j = %d, a = {%d, %d}\n", j, a[0], a[1]);
    }

    printf("j = %d, a = {%d, %d}\n", j, a[0], a[1]);
}

Çıkış:

j = 10, a = {15, 10}
j = 5, a = {10, 15}

İkincisi:

#include <cstdio>
#include "SR.h"
int main()
{
    int sum = 0;
    for (int i = 1; i < 100; i  ) {
        SR ii(i);
        while (i--)
            sum  = i;
    }
    printf("sum = %d\n", sum);
}

//The output is "sum = 161700".

CEVAP
11 Mart 2010, PERŞEMBE


SR-değişken yakalanan-restoratör olarak görev aldı. Kapsam dışına çıktığında daha önce yakalanan bazı değer yükler.

İki şey yapacak kurucu: bir referans yakalama ve referans değeri yakalamak. Yıkıcı başvuru için özgün değeri geri yükler.

class SR
{
public:
  SR(int& var) : capture(var), value(var) {}
  ~SR() { capture = value; }

private:
  int& capture;
  int value;
};

Sadece bir tahmin, ama SR ScopeRestorer için durmak gerekiyordu sanırım? Edit:

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • ColdfusTion

    ColdfusTion

    3 Aralık 2007
  • fireflame65

    fireflame65

    27 Mart 2007
  • pucksz

    pucksz

    24 Mart 2006