Можно ли переопределить мою константную функцию-член C ++, возвращающую const указатель на внутренний неконстантный массив с использованием const_cast?

Я изучаю C ++ и наткнулся на этот оператор const_cast. Рассмотрим следующий пример:

class Test
{  
  private:
    char name[100];
  public:
    Test(const char* n) { std::strncpy(name, n, 99); name[99]=0; }
    const char* getName() const { return name; }
}

Теперь пользователь может делать

Test t("hi");
const_cast<char*>(t.getName())[0] = 'z'; //modifies private data...

. Это нормально? Я имею в виду изменение личных данных, поскольку целью возврата const char * было предотвращение изменения личных данных. Как мне предотвратить это? (без использования std :: string)

5
задан Billy ONeal 20 June 2011 в 23:13
поделиться