forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   C++ (http://forum.boolean.name/forumdisplay.php?f=22)
-   -   mutable volatile extern register auto typename explicit (http://forum.boolean.name/showthread.php?t=15451)

falcon 09.09.2011 00:52

Ответ: mutable volatile extern register auto typename explicit
 
HolyDel
мне почему то кажется, что конкретный пример - очень гадкая штука.
подчеркну, что это лишь моё скромное мнение, но методы должны выполнять одну, минимальную и очевидную(!) операцию. Т.е. то, что называется побочным действием было бы здорово свести к минимуму. В твоём же случае, обычный геттер от которого ждут обычного гета, да ещё и веря, что этот геттер ничего не сделает с данными (т.к. const) с какого-то неведомого перепуга, ребилдит матрицу и меняет данные!.. ну косяк же очевидный, не?..

HolyDel 09.09.2011 02:32

Ответ: mutable volatile extern register auto typename explicit
 
Цитата:

я не вкурил. какой смысл в const в функциях?
у ноды есть логическое состояние и физическое.
const заставляет физически быть объект константным
а mutable - логически.

почему лучше ориентироваться именно на логическое состояние:
возьмем для примера функцию построения бяки до ноды

Код:

void BuildBaka(Node *toNode)
{
...toNode()->getLocalMatrix();
...toNode()->setPosition -< логическая ошибка, не должно компилироваться. но если убрать константность метода - то компилироваться будет.
}

Код:

void BuildBaka(const Node *toNode)
{
...toNode()->getLocalMatrix(); <- без mutable не компилируется
...toNode()->setPosition <- не компилируется, логическая ошибка, все правильно.
}

Код:

ну косяк же очевидный, не?..
не. помоему получение матрицы очень даже минимальная команда. куда минимальнее?
или предлагаете выносить в клиентский код что то вроде:
Код:

if(node->NeedRebuildLocalMatrix())
node->RebuildLocalMatrix();

node->getLocalMatrix();

код, кстати, деалет совершенно то, что от него ожидают - возвращает локальную матрицу объекта
каким именно способом он это делает - клиенский код волновать не должно.

HolyDel 23.09.2011 16:01

Ответ: mutable volatile extern register auto typename explicit
 
вот хорошая статья:
http://alenacpp.blogspot.com/2005/10...constcast.html

impersonalis 23.09.2011 16:59

Ответ: mutable volatile extern register auto typename explicit
 
Цитата:

Сообщение от HolyDel (Сообщение 203215)
вот хорошая статья:
http://alenacpp.blogspot.com/2005/10...constcast.html

:) :)
Цитата:

Сообщение от impersonalis (Сообщение 201647)
Небольшой список "экзотических" ключевых слов (virtual, static и компания сюда не относятся :) ) с описаниями. Если по одной ссылке (на мой взгляд) сложно составить мнение о команде или рассказывается лишь одна область применения, то указаны несколько источников

mutable
http://www.quizful.net/post/cpp-keywords-usage
--> http://alenacpp.blogspot.com/2005/10...constcast.html <--

volatile
http://www.quizful.net/post/cpp-keywords-usage
http://alenacpp.blogspot.com/2006/04/volatile.html

extern
http://www.quizful.net/post/cpp-keywords-usage
http://www.sbp-program.ru/SBP-C-Memory-Class.htm#extern
http://www.gamedev.ru/code/forum/?id=56367

register
http://www.quizful.net/post/cpp-keywords-usage

auto
http://www.quizful.net/post/cpp-keywords-usage

typename
http://alenacpp.blogspot.com/2006/08/typename.html

explicit
http://jia3ep.blogspot.com/2008/07/e...nstructor.html
http://alenacpp.blogspot.com/2009/09/blog-post.html

const_cast
http://alenacpp.blogspot.com/2005/10...constcast.html
http://alenacpp.blogspot.com/2005/08/c.html

reinterpret_cast
http://alenacpp.blogspot.com/2005/08/c.html

dynamic_cast
http://alenacpp.blogspot.com/2005/08/c.html
http://ru.wikipedia.org/wiki/Dynamic_cast

static_cast
http://alenacpp.blogspot.com/2005/08/c.html
http://www.rsdn.ru/article/cpp/static_cast.xml


impersonalis 02.11.2011 18:05

Ответ: mutable volatile extern register auto typename explicit
 
Есть ещё такая группировка некоторых ключевых слов из 1-ого поста
http://ru.wikipedia.org/wiki/Класс_памяти


Часовой пояс GMT +4, время: 03:12.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot