Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
sashadereh
3 / 3 / 1
Регистрация: 30.09.2012
Сообщений: 63
#1

Const в функциях-членах класса - C++

23.09.2013, 20:40. Просмотров 772. Ответов 10
Метки нет (Все метки)

setSmth() - некий метод класса myClass
C++
1
2
const myClass setSmth();
myclass setSmth() const;
Эти два варианта эквивалентны?

Спасибо!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.09.2013, 20:40
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Const в функциях-членах класса (C++):

Error C2355: this: может указываться только в нестатических членах-функциях - C++
Код вероятно полностью рабочий (скачал пример кода с официального сайта одной организации). Код был написан под эклипс и вероятно там и...

int const * const foo(const int* param) const - разъясните значение квалификаторов - C++
int const * const foo(const int* param) const -----1------2----------3----------------4 1: ? 2: делает содержимое массива или...

Перегруженные знаки в дружественных функциях шаблона класса - C++
Здравствуйте! Не могу найти ошибку, только начал тренироваться с шаблонами. Помогите пожалуйста! #include "stdafx.h" #include...

Поле класса const; ? - C++
Встретил следующий код в книге "С++. Стандартная библиотека. Николай Джосьютис" (привожу только интересующую его часть): class Person ...

Что значит const в конструкторе класса? - C++
Здравствуйте, не понимаю что значит const в конструкторе класса. Встречался с const только когда он работал с переменными. Или это значит...

Const throw(), наследование от класса exception - C++
В принципе, проблема решена, но хочу разобраться. Код в MSVS: #include <iostream> #include <exception> using namespace std; ...

10
Croessmah
Ушел
Эксперт CЭксперт С++
13553 / 7704 / 872
Регистрация: 27.09.2012
Сообщений: 19,006
Записей в блоге: 3
Завершенные тесты: 1
23.09.2013, 20:42 #2
C++
1
const myClass setSmth();
Возвращение объекта const myClass


C++
1
myclass setSmth() const;
В данной функции нельзя менять состояние объекта (кроме mutable)
2
sashadereh
3 / 3 / 1
Регистрация: 30.09.2012
Сообщений: 63
23.09.2013, 20:51  [ТС] #3
Croessmah, благодарю.
0
Мариам
0 / 0 / 0
Регистрация: 23.09.2013
Сообщений: 10
23.09.2013, 22:48 #4
Цитата Сообщение от Croessmah Посмотреть сообщение
C++
1
const myClass setSmth();
Возвращение объекта const myClass


C++
1
myclass setSmth() const;
В данной функции нельзя менять состояние объекта (кроме mutable)
а если такая строка
C++
1
2
3
ComplexNumber const operator + (ComplexNumber const & cmpx) const
    {
        return ComplexNumber(m_real + cmpx.GetReal(), m_img + cmpx.GetImg());
для чего const в конце первой строки???
0
castaway
Эксперт С++
4915 / 3023 / 370
Регистрация: 10.11.2010
Сообщений: 11,081
Записей в блоге: 10
Завершенные тесты: 1
23.09.2013, 22:54 #5
Цитата Сообщение от Мариам Посмотреть сообщение
для чего const в конце первой строки???
Цитата Сообщение от Croessmah Посмотреть сообщение
В данной функции нельзя менять состояние объекта (кроме mutable)
...
1
Мариам
0 / 0 / 0
Регистрация: 23.09.2013
Сообщений: 10
23.09.2013, 23:02 #6
моего преподавателя такой ответ не устроил
зачем передавать, говорит, если нельзя изменять? и какие ограничения const накладывает на функцию в таком случае? и вот я не смогла ответить(
0
Kuzia domovenok
1957 / 1810 / 142
Регистрация: 25.03.2012
Сообщений: 6,274
Записей в блоге: 1
23.09.2013, 23:10 #7
Уверен, если бы ты понимал, что отвечаешь, ответ бы устроил всех.
Функция myclass setSmth() const; не может изменять ни одно поле класса или вызывать неконстантные функции-члены его. А всё для того, чтобы можно было сделать так
C++
1
2
3
4
5
6
7
8
9
10
11
12
class myclass{
public:
  //...
  void setSmth() const;
};
 
int main(){
  const myclass obj;
  obj.setSmth();//не было бы const после setSmth()
                     //была б ошибка!
  //...
}
0
Tulosba
:)
Эксперт С++
4397 / 3233 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
23.09.2013, 23:14 #8
Цитата Сообщение от Мариам Посмотреть сообщение
зачем передавать, говорит, если нельзя изменять?
Т.е. например вывод, скажем, на экран аргумента уже бесполезен?
Цитата Сообщение от Мариам Посмотреть сообщение
и какие ограничения const накладывает на функцию в таком случае?
Нельзя вызвать не-const-функции из const-функции для объекта this.
0
castaway
Эксперт С++
4915 / 3023 / 370
Регистрация: 10.11.2010
Сообщений: 11,081
Записей в блоге: 10
Завершенные тесты: 1
23.09.2013, 23:14 #9
Цитата Сообщение от Мариам Посмотреть сообщение
зачем передавать, говорит, если нельзя изменять? и какие ограничения const накладывает на функцию в таком случае? и вот я не смогла ответить(
Если бы я был на месте твоего преподавателя, меня бы такой ответ тоже не устроил. Надо уметь объяснить смысл написанного, а не читать по шаблону.
1
Tulosba
:)
Эксперт С++
4397 / 3233 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
23.09.2013, 23:15 #10
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
Уверен, если бы ты понимал
Цитата Сообщение от Мариам Посмотреть сообщение
и вот я не смогла ответить(
не все девочки мальчики
0
gray_fox
24.09.2013, 01:45     Const в функциях-членах класса
  #11

Не по теме:

Цитата Сообщение от Мариам Посмотреть сообщение
зачем передавать, говорит, если нельзя изменять?
Внезапно: что бы передавать и не изменять)

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.09.2013, 01:45
Привет! Вот еще темы с ответами:

Копировать пустую строку в const char* Конструктор структуры (класса) - C++
Я думал, что это копирует в ch символ конца строки char *ch=new char; strcpy(ch,""); delete ch; В обычном случае оно так и...

Инициализация в объявлении константных статических (const static) членов-данных класса. - C++
Привет. Подскажите пожалуйста почему нельзя создавать в классе const static float, а const static int можно? class A{ const...

Как компилятор обрабатывает член класса static constexpr const char* - C++
Привет! Наткнулся на непонятный момент class Foo { public: static constexpr const char* PTR = "value"; }; без...

char operator[](unsigned short offset) const; // что означает const? - C++
Собстенно вопрос уже озвучен :).


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

Или воспользуйтесь поиском по форуму:
11
24.09.2013, 01:45
Ответ Создать тему
Опции темы

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