C/belirleyiciler kodlama stilini alıcılar | Netgez.com
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

  • ★ByScrapi★ Designs

    ★ByScrapiâ

    27 AÄžUSTOS 2013
  • Boiler Room

    Boiler Room

    10 Mayıs 2012
  • NYCarspotter

    NYCarspotter

    26 EYLÜL 2011