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

  • IGN

    IGN

    19 EYLÜL 2006
  • MofoHifi Records

    MofoHifi Rec

    15 HAZİRAN 2006
  • Tek Syndicate

    Tek Syndicat

    23 Temmuz 2008