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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
outoftime
║XLR8║
509 / 431 / 33
Регистрация: 25.07.2009
Сообщений: 2,295
#1

Метод класса - C++

15.04.2011, 15:25. Просмотров 724. Ответов 11
Метки нет (Все метки)

Что дает спецификатор const в методе?
C++
1
char *getBuffer() const { return m_buffer; };
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.04.2011, 15:25
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Метод класса (C++):

Как передать в метод класса Menu указатель на метод дочернего класса? - C++
Как передать в метод базового класса указатель на метод дочернего: class Menu() { protected: setCallback(*********); //...

Как описать метод класса? Как двумя способами описать инлайнируемый метод класса? Что такое this? - C++
Раздел 1. Строки: нужен фрагмент кода. Обязательно используйте функции для работы со строками. Как найти адрес последнего символа строки?...

Создать для класса виртуальный метод, возвращающий уникальный идентификатор класса - C++
В курсаче по ООП сказано создать для класса виртуальный метод,возвращающий уникальный идентификатор класса. Вопрос в том, что это такое?

Может ли метод родительского класса обратиться к полю дочернего класса - C++
Может ли метод родительского класса обратиться к полю дочернего класса?

Как в методе класса вызвать другой метод того же класса? - C++
class mate { public: int AplusB(int A, int B) { return A+B; } int AplusBplusC(int A, int B, int C)

Как в классе А у объекта класса B вызвать метод класса B ? - C++
Есть Класс A и класс B . В классе B лежит объект типа ArrayList , назовём его arrayList, в этом же классе есть метод push() . Возможно ли в...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Deviaphan
Делаю внезапно и красиво
Эксперт C++
1286 / 1220 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
15.04.2011, 15:29 #2
Даёт возможность вызвать этот метод для константного объекта.
Но данный код не скомпилируется, т.к. пытаешься вернуть константный указатель как неконстантный.
outoftime
║XLR8║
509 / 431 / 33
Регистрация: 25.07.2009
Сообщений: 2,295
15.04.2011, 15:53  [ТС] #3
Deviaphan, компилируется, мало того - работает (:
C++
1
2
3
4
5
6
7
8
9
10
11
class DataSpreadSheat
{
protected:
    char *m_buffer;
public:
    char *getBuffer() const;
};
 
char *DataSpreadSheat::getBuffer() const {
    return m_buffer;
};
Deviaphan
Делаю внезапно и красиво
Эксперт C++
1286 / 1220 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
15.04.2011, 16:06 #4
Слишком опасно так делать. Я бы на его месте не работал.)
Ma3a
Эксперт C++
616 / 460 / 31
Регистрация: 28.01.2011
Сообщений: 605
15.04.2011, 16:17 #5
Deviaphan, outoftime, константные методы всего лишь блокируют изменение переменных внутри метода, поскольку m_buffer тут никак не меняется, всё работает. Данное поведение может быть изменено, если полю класса поставить модификатор mutable, тогда поле класса можно изменять в константном методе, но вот тогда это действительно будет опасно
Deviaphan
Делаю внезапно и красиво
Эксперт C++
1286 / 1220 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
15.04.2011, 16:21 #6
Цитата Сообщение от Ma3a Посмотреть сообщение
но вот тогда это действительно будет опасно
Наоборот.) Если класс меняет своё поле, объект знает, что происходит. А вот когда внутренности отдаются в свободное плавание, это оч опасно.
А я был уверен, что не получится вернуть не константный указатель из константного метода.) У меня даже ни разу рука не поднялась подобный код написать, чтобы убедиться в обратном.) Да и желания не появлялось такого.)))
Ma3a
Эксперт C++
616 / 460 / 31
Регистрация: 28.01.2011
Сообщений: 605
15.04.2011, 16:24 #7
Цитата Сообщение от Deviaphan Посмотреть сообщение
Если класс меняет своё поле, объект знает, что происходит.
Главное, чтобы программист знал, что происходит А насчет возврата неконстантного указателя эт конечно плохо, не спорю.
Deviaphan
Делаю внезапно и красиво
Эксперт C++
1286 / 1220 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
15.04.2011, 16:28 #8
Цитата Сообщение от Ma3a Посмотреть сообщение
Главное, чтобы программист знал, что происходит
Ну, я примерно это и имел в виду.))) Т.е. класс может использовать не только его разработчик. Соответственно и отдавая себя на растерзания куче программистов классу сложно поддерживать себя в актуальном состоянии.)
outoftime
║XLR8║
509 / 431 / 33
Регистрация: 25.07.2009
Сообщений: 2,295
15.04.2011, 16:35  [ТС] #9
Ma3a, мне нужно хранить указатель что-бы запусткать _itoa(), поэтому пришлось поизвращаться (:
Deviaphan
Делаю внезапно и красиво
Эксперт C++
1286 / 1220 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
15.04.2011, 16:39 #10
Цитата Сообщение от outoftime Посмотреть сообщение
поэтому пришлось поизвращаться
Что мешает передавать в класс число и вызывать itoa внутри, без извращений?
outoftime
15.04.2011, 16:49  [ТС]
  #11

Не по теме:

Deviaphan, блин, ступил...

Deviaphan
Делаю внезапно и красиво
Эксперт C++
1286 / 1220 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
15.04.2011, 16:58 #12
И не забудь про возможность перегрузки, чтобы и double передавать если надо.)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.04.2011, 16:58
Привет! Вот еще темы с ответами:

Может ли метод класса возвращать экземпляр этого же класса? - C++
такой вопрос, реально что бы функция класса имела тип класса(возвращала класс), то есть типа так: class c1{ c1 f1(); } если да, то...

Чем отличается шаблонный метод класса от шаблонного класса? - C++
Чем отличается шаблонный метод класса от шаблонного класса???????ПЛИЗ!!!!Если можно немного ссылок на летературу

Как корректно передать в метод шаблонного класса объект шаблонного класса в качестве параметра? - C++
header.h template <class T> class MyVector { public: void swap(MyVector<T>Vector); } template <class T> void...

В конструкторе вложенного класса инициализируется приватное поле. Потом вызывается функция-метод этого класса и выводит значение этого поля НО НЕ ТО! - C++
Друзья! Почему так? #include <windows.h> #include <iostream> using namespace std; //Вот главный класс class A{ ...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
15.04.2011, 16:58
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru