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)

impersonalis 08.09.2011 15:46

mutable volatile extern register auto typename explicit
 
Небольшой список "экзотических" ключевых слов (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

falcon 08.09.2011 18:45

Ответ: mutable volatile extern register auto typename explicit
 
имхо - тут ничего экзотического..
C-style касты в плюсовом коде юзать моветон, так что плюсовые касты ну никак не экзотические..
спецификаторы вроде тоже штука не экзотическая и встречается часто.. ну вот volatile да, не все знают. И то, в куче чтива о потокобезопасных синглтонах на него ссылаются..
вот export - риально экзотика.. да ещё какая :D

impersonalis 08.09.2011 20:54

Ответ: mutable volatile extern register auto typename explicit
 
экспорт такая экзотика, что в каждом проекте DLL встречается.
Потокобезопасных синглтонов по сути не бывает: можно сделать грязный хак, который не на каждом компиляторе запустится.
Ну я тоже могу обосрать - мало не покажется (жаль только время тратить).
имхо..

ffinder 08.09.2011 21:32

Ответ: mutable volatile extern register auto typename explicit
 
последние четыре выбрасывай, все cast'ы плюсовые явно не редкость в коде.

impersonalis 08.09.2011 21:34

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

Сообщение от ffinder (Сообщение 201697)
последние четыре выбрасывай, все cast'ы плюсовые явно не редкость в коде.

у кого-то и goto не редкость. Понятное дело, что список весьма условный.

moka 08.09.2011 21:34

Ответ: mutable volatile extern register auto typename explicit
 
Опа, за volatile спасибо, на самом деле нужная штука, т.к. в C# много приходится с потоками работать, и ловил такую проблему, где цикл в потоке нужно было отменять, но не грубо, а лишь заставить его закончиться, вот тут и была проблема, теперь не будет :)

den 08.09.2011 21:49

Ответ: mutable volatile extern register auto typename explicit
 
а в чём смысл auto ? (не очень понял) (не которое появилось в c++11, а которое сейчас)

HolyDel 08.09.2011 21:49

Ответ: mutable volatile extern register auto typename explicit
 
auto душевен в C++0x. а раньше был не нужен, да. по сути семантика auto это значит, что переменная объявляется в стеке. но она итак объявляется в стеке без всяких дополнительных слов.
mutable нужен для кеширования результата.
explicit тоже нужен часто.

falcon 08.09.2011 21:58

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

Ну я тоже могу обосрать - мало не покажется (жаль только время тратить).
я в общем-то и не обсирал тебя.

Цитата:

экспорт такая экзотика, что в каждом проекте DLL встречается.
http://ru.wikipedia.org/wiki/C%2B%2B...2.D0.BE_export

чочо, прям в каждой длл-ке такой export для шаблонов есь??..

impersonalis 08.09.2011 22:20

Ответ: mutable volatile extern register auto typename explicit
 
пардон, прочитал (и далее осознавал) как extern

.Squid 08.09.2011 22:50

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

Сообщение от HolyDel (Сообщение 201702)
mutable нужен для кеширования результата.

Поясни.

HolyDel 08.09.2011 23:38

Ответ: mutable volatile extern register auto typename explicit
 
Код:

class Node
mutable mat4 localmatrix;
...
const mat4& getLocalMatrix() const;
....
const mat4& getLocalMatrix() const
{
if(need_reaclc)
localmatrix = CalcLocalMatrix(position,orient,scale);
return localmatrix;
}


impersonalis 08.09.2011 23:45

Ответ: mutable volatile extern register auto typename explicit
 
иными словами - изменение члена класса (с идентификатором mutable) даже из const-метода (что и написано по ссылкам)

Mr_F_ 09.09.2011 00:15

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

class Node
mutable mat4 localmatrix;
...
const mat4& getLocalMatrix() const;
....
const mat4& getLocalMatrix() const
{
if(need_reaclc)
localmatrix = CalcLocalMatrix(position,orient,scale);
return localmatrix;
}
я не вкурил. какой смысл в const в функциях? что нельзя будет полученную матрицу менять, взяв её через getLocalMatrix? а mutable делает, что всё-таки можно менять? но ТОЛЬКО внутри объекта-носителя mutable данных?
как это связано с выражением "кеширование результата"?

impersonalis 09.09.2011 00:24

Ответ: mutable volatile extern register auto typename explicit
 
Холи привёл конкретный (частный) пример использования.
Цитата:

я не вкурил. какой смысл в const в функциях? что нельзя будет полученную матрицу менять, взяв её через getLocalMatrix? а mutable делает, что всё-таки можно менять?
конст-функция не изменяет члены класса, кроме тех, что объявлены с mutable (при попытке изменить неmutable член в конст-функции компилятор запротестует).


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

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