Если оператор перегружается для класса C++, как я мог использовать оператор по умолчанию вместо этого?

Свойства представляют поля. Поля должны (почти всегда) быть сохраненными частными к классу и получили доступ через, получают и устанавливают свойства. Свойства обеспечивают уровень абстракции, разрешающей Вам изменить поля, не влияя на внешний путь к ним получают доступ вещи, которые используют Ваш класс.

public class MyClass
{
    // this is a field.  It is private to your class and stores the actual data.
    private string _myField;

    // this is a property. When accessed it uses the underlying field,
    // but only exposes the contract, which will not be affected by the underlying field
    public string MyProperty
    {
        get
        {
            return _myField;
        }
        set
        {
            _myField = value;
        }
    }

    // This is an AutoProperty (C# 3.0 and higher) - which is a shorthand syntax
    // used to generate a private field for you
    public int AnotherProperty{get;set;} 
}

@Kent указывает, что Свойства не требуются, чтобы инкапсулировать поля, они могли сделать вычисление на других полях или служить другим целям.

@GSS указывает, что можно также сделать другую логику, такую как проверка, когда к свойству получают доступ, другая полезная функция.

5
задан sharptooth 20 July 2009 в 14:28
поделиться

3 ответа

Я видел, как этот случай всплывал в ISO встреча, поскольку это нарушило некоторые реализации макроса offsetof () (LWG 273). Решение: & reinterpret_cast (variable)

7
ответ дан 13 December 2019 в 22:13
поделиться

Я определяю эту служебную функцию:

template<typename T>
T *GetRealAddr(T &t)
    { return reinterpret_cast<T*>(&reinterpret_cast<unsigned char &>(t)); }
3
ответ дан 13 December 2019 в 22:13
поделиться

& переменная .GetInterfacePtr ();

0
ответ дан 13 December 2019 в 22:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: