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

Модификатор const в аргументах функций - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ не могу понять ошибку http://www.cyberforum.ru/cpp-beginners/thread334565.html
Народ, здарова, сижу над классами, конкретно наследование классов! Компилятор выдает ошибку: Unit1.cpp(143): E2285 Could not find a match for 'Body::Body(char *,shape,color,material)' Объясните...
C++ Паузы между проигрыванием wav файлов Добрый день ,есть загвоздка с воспроизведением звуковых файлов ,воспроизводя поочередно их ,образуется довольно заметная пауза : sndPlaySound("file_0.wav",SND_SYNC); ... http://www.cyberforum.ru/cpp-beginners/thread334564.html
C++ отключение клавиши
Всем привет! Как можно отключить определенную клавишу в функции GetAsyncKeyState? приведите пожалуйста примеры?
C++ Как long перевести в char?
У меня дата и время в формате long пишу так sprintf(buf, "%d", p); MessageBoxA(NULL, buf, "information", MB_OK); p это указатель на структуру long, long - дата, время получаю 0. пишу под...
C++ Структурированный в объектно-ориентированный http://www.cyberforum.ru/cpp-beginners/thread334525.html
Доброго времени суток! В чем собственно моя проблема. Есть задание курсовой роботы (миниатюры), есть исходник программы написанный мною (прилагаю). Но программу надо написать двумя способами,...
C++ Как создать переменную из консоли Есть функция void createStream(string filename) { OutputStreamPtr stream(OpenSound(device, filename, true)); } Нужно написать функцию, которая будет создавать поток для аудио, но только не с... подробнее

Показать сообщение отдельно
Bers
Заблокирован

Модификатор const в аргументах функций - C++

19.07.2011, 22:29. Просмотров 3730. Ответов 31
Метки (Все метки)

Постоянно путаюсь в этих константах. Как писать грамотнее?

Вот так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
     template<typename TypeT>  
void TLinePointer<TypeT>::operator = (TypeT* pObject)  //функция не меняет аргумент
{                               //по идее, просится const
    if(pObject==0) { Release(); return; }
    if(mp_Pointer != pObject)  
    {  
        Release();
        mp_Pointer = pObject; 
        mp_CounterLink=new int; 
        *mp_CounterLink=1;
        pObject=0; 
    }
}
Или вот так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
     template<typename TypeT>  
void TLinePointer<TypeT>::operator = (const TypeT* pObject) 
{
    if(pObject==0) { Release(); return; }
    if(mp_Pointer != pObject)  
    {  
        Release();
        TypeT* TempPointer = const_cast<TypeT*>(pObject); 
                                                      //приходится кастовать, потому что
        mp_Pointer = TempPointer;      //нельзя неконстантному указателю 
                                                      //присвоить константный напрямую
        mp_CounterLink=new int; 
        *mp_CounterLink=1;
        pObject=0; 
    }
}
Интуиция мне подсказывает, что второй вариант более правильный (хотя и приходиться совершать больше движений)

А что подскажут уважаемые эксперты? Или может быть есть ещё какие то варианты?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru