SORU
17 NİSAN 2009, Cuma


C/belirleyiciler kodlama stilini alıcılar

C programlama yapıyorum# bir süre için ve C becerilerini tazelemek istiyorum.

Sınıfı:

class Foo
{
    const std::string& name_;
    ...
};

Ne en iyi yaklaşım olacaktır (sadece adı _ alanını okuma erişimi izin vermek istiyor):

  • alıcı bir yöntemi kullanın: inline const std::string& name() const { return name_; }
  • bir sabit olduğu için alan ortak olun

Teşekkürler.

CEVAP
17 NİSAN 2009, Cuma


Alıcı bir yöntem kullanarak gelecekte daha karmaşık şeyler ile alıcı yöntemini değiştirmek için izin verir gibi uzun ömürlü bir sınıf için daha iyi bir tasarım seçimdir. Bu sabit değeri için gerekli olması ihtimali az gibi görünse de, maliyeti düşük ve olası yararları büyük.

Bir kenara, C , bir üyenin hem alıcı ve ayarlayıcı vermek için özellikle iyi bir fikirdiraynı adıberi gelecekte sonra aslında yöntemlerin çifti değiştirebilirsiniz:

class Foo {
public:
    std::string const& name() const;          // Getter
    void name(std::string const& newName);    // Setter
    ...
};

Her biri için operator()(): bir tanımlayan tek bir ortak üye değişkeni

// This class encapsulates a fancier type of name
class fancy_name {
public:
    // Getter
    std::string const& operator()() const {
        return _compute_fancy_name();    // Does some internal work
    }

    // Setter
    void operator()(std::string const& newName) {
        _set_fancy_name(newName);        // Does some internal work
    }
    ...
};

class Foo {
public:
    fancy_name name;
    ...
};

İstemci Kodu Dersin çekirdekler gerekir, ama hiçbir sözdizimi değişiklik gereklidir! Belli ki, bu dönüşüm de yalnızca bir alıcı gereklidir sabit değerler için çalışıyor.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • SuicideSheeep

    SuicideSheee

    8 Ocak 2012
  • taliajoy18

    taliajoy18

    12 Temmuz 2011
  • RaverX DouBle StAg XI

    RaverX DouBl

    23 Mayıs 2008