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

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

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

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

15.04.2011, 15:25. Просмотров 722. Ответов 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++
Такой вопрос. Необходимо сделать метод класса который бы оперировал с двумя объектами одновременно. В одной книге был пример сравнения двух...

Метод класса - C++
Есть кусок кода: namespace Head { using namespace std; // методы класса void Csk::set(char nazv1,char prepod1,int...

Ссылка на метод класса - C++
если кратко то задача такова надо передать адрес метода класа.как это можно сделать?

Указатель на метод класса - C++
Собственно, проблема вот в чем. Есть класс и для него определен метод class ABC ....... public: void paint(.....); ...

Метод дружественного класса - C++
Нужно сделать такую ​​задачу, но дойшовшы к этому: выбрать заданное число N абитуриентов, имеющих высокий средний балл (метод...

Метод за типом класса - C++
Объясните вот эту строку: dist3 = dist1.add_dist(dist2); и эту: Distance Distance::add_dist(Distance d2)

Указатель на метод класса - C++
Как сделать указатель на метод класса А, который наследует класс В в классе В. class A : B { public: double...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Deviaphan
Делаю внезапно и красиво
Эксперт C++
1286 / 1220 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
15.04.2011, 15:29     Метод класса #2
Даёт возможность вызвать этот метод для константного объекта.
Но данный код не скомпилируется, т.к. пытаешься вернуть константный указатель как неконстантный.
outoftime
║XLR8║
507 / 429 / 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║
507 / 429 / 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, блин, ступил...

MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.04.2011, 16:58     Метод класса
Еще ссылки по теме:

Не работает метод класса - C++
class Lines { private: char *line; public: void setLine(char *l) { int len = strlen(l);

Метод класса строки - C++
//Длина L кратна 4-м, то выделяется подстрока после последнего пробела; void String::run() { unsigned int i=0, j=0; char *ss;...

Указатели на метод класса - C++
Допустим есть 2 класса: class A { public: A() {} ~A() {} virtual void Draw(GLuint shader)

Не работает метод класса - C++
Добрый вечер. При решении задачи столкнулся с проблемой. Есть вектор контейнер, заполнен class-объектами. Нада вызвать метод con_salary(),...

Не работает метод класса - C++
#define _CRT_SECURE_NO_WARNINGS #include <iostream> using namespace std; class Lines { private: char *line;


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

Или воспользуйтесь поиском по форуму:
Deviaphan
Делаю внезапно и красиво
Эксперт C++
1286 / 1220 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
15.04.2011, 16:58     Метод класса #12
И не забудь про возможность перегрузки, чтобы и double передавать если надо.)
Yandex
Объявления
15.04.2011, 16:58     Метод класса
Ответ Создать тему
Опции темы

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