Форум программистов, компьютерный форум CyberForum.ru

ООП - C++

Восстановить пароль Регистрация
 
bambino
 Аватар для bambino
193 / 19 / 4
Регистрация: 05.08.2010
Сообщений: 229
30.04.2011, 20:22     ООП #1
Всем привет! Если можно, не могли бы вы ответить на пару вопросов по ООП, а то что-то не могу понять.
Вопросы: Зачем используются такие парные определения?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
struct T {}; 
 
class Container 
{ 
    // ctor's 
    // cctor 
    // Container& operator = () 
    // dtor 
    // . . . 
public: 
    T& operator [] (int i) const; // {return t_[i];} 
    T& operator [] (int i); // {return t_[i];} 
//private: 
//  T* t_; 
};
Какие изменения необходимо внести в классе Container, чтоб уничтожить глюк?
C++
1
2
3
4
void  f(Container const& c) 
{ 
    c[0] = T(); // компилируется! 
}
Всем спасибо за ответы!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.04.2011, 20:22     ООП
Посмотрите здесь:

ООП C++
C++ ООП C++
C++ ООП
C++ по ООП .
C++ ООП
C++ ООП
C++ ООП
C++ ООП

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
[Freeman]
34 / 34 / 6
Регистрация: 07.06.2010
Сообщений: 118
30.04.2011, 21:13     ООП #2
Цитата Сообщение от bambino Посмотреть сообщение
Зачем используются такие парные определения?
Один оператор константный, другой - нет. Const оператор нужен потому, что нельзя применять не константные методы к константным объектам. Например в конструкторе копий:
C++
1
Container(const Container& );
или в функции f из вашего кода. Параметр объявлен как константный, и к нему нельзя применить обычный operator [], только константный.
Какие изменения необходимо внести в классе Container, чтоб уничтожить глюк?
Глюка здесь нет, c[0] присваивается временный объект.
Yandex
Объявления
30.04.2011, 21:13     ООП
Ответ Создать тему
Опции темы

Текущее время: 20:35. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru