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

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

Войти
Регистрация
Восстановить пароль
 
Borkot
4 / 4 / 0
Регистрация: 05.05.2012
Сообщений: 183
Записей в блоге: 1
#1

Вроде-бы все просто, но путаюсь с константыми методами - C++

01.02.2013, 13:31. Просмотров 258. Ответов 2
Метки нет (Все метки)

В чем разница где поставить модификатор const
const void Metod();
void Method()const;
В каком случаем использовать один из их?
Заранее спасибо.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.02.2013, 13:31     Вроде-бы все просто, но путаюсь с константыми методами
Посмотрите здесь:

вроде все просто - C++
#include "stdafx.h" #include <iostream> #include <ctime> using namespace std; int main() { int mas, a; srand...

видимо путаюсь в типах данных - C++
Здравствуйте. Для понимая о чем говорим: #include <iostream> #include <ctype.h> #include <clocale> using namespace std; ...

Вроде все верно, но почему же не вычисляется? - C++
Код: #include <iostream> #include <cmath> using namespace std; float dist(float v, float a) { float x = 0;

Прога на Си, все правильно вроде, но выскакивает - C++
Проверьте, пожалуйста, вроде задержку сделала, но выскакивает почему-то не считает результат... #include <vcl.h> #include <conio.h> ...

Не могу инициализировать.Вроде все нормально - C++
Всем привет,начинаю изучение новой темы,и тут сразу такая проблема void menu() { setlocale(LC_ALL, "rus"); cout <<...

Выдает ошибку но вроде все правильно посмотрите! - C++
Задача в которой создается указатель второго порядка. #include <iostream> #include <conio.h> int main() { double dx=234.678; ...

Как исправить вот эти ошибки? Вроде все правильно сделал... - C++
/* * test.cpp * * Created on: 05.11.2011 * Author: Sensei */ #include <iostream> using std::cout; using...

Посмотрите пожалуйста программу ,вроде все должно работать ,но что-то не так - C++
#include <iostream> using namespace std; int main() { int a,b,c,i,z; c=0; cout<< "enter the number"<< endl; cin >> a; ...

Структуры: Вывести все танки с 1940-1950 г. чей калибр , больше 50 мм. или же просто больше 50 - C++
Названия структуры: Танки. Ввод данных такой: Названия Год выпуска Калибр Скорость Вывести:

Вроде массивы - C++
Написать программу, использующую функцию. Для каждого из заданных целочисленных массивов X, Y, Z вычислить произведение элементов кратных...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
John Prick
774 / 707 / 129
Регистрация: 27.07.2012
Сообщений: 2,026
Завершенные тесты: 3
01.02.2013, 13:41     Вроде-бы все просто, но путаюсь с константыми методами #2
Цитата Сообщение от Borkot Посмотреть сообщение
const void Metod();
Возвращает константный void (что, по сути, бред)

Цитата Сообщение от Borkot Посмотреть сообщение
void Method()const;
Константная функция-член класса (Если конечно эта функция объявлена в объявлении класса, а не абы где. Иначе - тоже ересь).
Dr.Urban
63 / 58 / 7
Регистрация: 14.12.2011
Сообщений: 193
01.02.2013, 14:25     Вроде-бы все просто, но путаюсь с константыми методами #3
void Method()const; означает что неявный указатель this даного метода есть тоже const, значит нельзя изменить поля класа. Но есть 2 способа обойти это:

1. Сделать поле mutable
2. const_cast<classname*>(this)-> ....
Ответ Создать тему
Опции темы

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