<?xml version="1.0" encoding="koi8-r"?>
<rss version="0.91">
<channel>
    <title>OpenForum RSS: Ссылки, константы, указалели... тонкий момент</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/7690.html</link>
    <description>Доброго времени суток, помогите разобраться с константами, указателями и ссылками:&lt;br&gt;const int cint = 5; // Целочисленная константа&lt;br&gt;const int *pcint = 0; // Указатель на целочисленную константу&lt;br&gt;int *const cpint=0; // Константный указатель на целочисленную константу&lt;br&gt;const int &amp;refInt = 7; // Ссылка на константу&lt;br&gt;const int *&amp;refInt = &amp;cint; // а вот тут не работает, почему ???&lt;br&gt;Ведь const int *&amp;refInt - ссылка на указатель на целочисленную константу? &lt;br&gt;В Липпмане написано что надо делать не так:&lt;br&gt; const int *&amp;refInt = &amp;cint;&lt;br&gt;а вот так:&lt;br&gt;int *const &amp;refInt = &amp;cint; &lt;br&gt;Но ведь позвольте :) int  *const &amp;refInt - это ссылка на Константный указатель, а значит он точно не к селу не к городу, да и во вторых вариант Липпмана тоже не компилируется :)&lt;br&gt;</description>

<item>
    <title>Ссылки, константы, указалели... тонкий момент (jd2)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/7690.html#3</link>
    <pubDate>Thu, 13 Nov 2008 22:12:07 GMT</pubDate>
    <description>Ну, честно говоря, как это правильно &#091;B&#093;произносится&#091;/B&#093;, я не задумывался - не вижу смысла в подобных упражнениях. А по поводу, почему так правильно, а так нет...&lt;br&gt;&lt;br&gt;Итак, что мы имеем в вашем варианте (упростим немного для ясности):&lt;br&gt;&#091;code&#093;int i = 5;&lt;br&gt;int* &amp; refi = &amp;i;&#091;/code&#093;&lt;br&gt;&lt;br&gt;На что справедливо получаем:&lt;br&gt;&lt;br&gt;test.cc:3: error: invalid initialization of non-const reference of type &apos;int*&amp;&apos; from a temporary of type &apos;int*&apos;&lt;br&gt;&lt;br&gt;А справедливо потому, что мы пытаемся инициализировать ссылку на несуществующий указатель. В том смысле, что переменной, содержащей указатель на int, на которую будет ссылаться наша ссылка, не существует. Компилятор создаёт в этом месте временную (?) переменную. Забыл, как это правильно называется - это примерно то же самое, что при возвращении значения из функции или при приведении типов в выражении. Второй вариант встречается, например, в случае такого кода:&lt;br&gt;&#091;code&#093;int i;&lt;br&gt;double x;&lt;br&gt;... = i + x;&#091;/code&#093;&lt;br&gt;&lt;br&gt;Здесь перед выполнением операции сложения, создаётся временная переменная типа do</description>
</item>

<item>
    <title>Ссылки, константы, указалели... тонкий момент (Ivanoff)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/7690.html#2</link>
    <pubDate>Sun, 09 Nov 2008 09:23:12 GMT</pubDate>
    <description>&amp;gt;Надеюсь, это у Вас хотя бы аргументы функции, а не автоматические переменные &lt;br&gt;&amp;gt;таких чуднЫх типов... :) &lt;br&gt;&lt;br&gt;это вообще не код, в смысле взят просто из учебника липмана&lt;br&gt;&lt;br&gt;&amp;gt;&#091;оверквотинг удален&#093;&lt;br&gt;&amp;gt;он обычно говорит, в чём именно проблема. С данным примером я &lt;br&gt;&amp;gt;получил: &lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt;error: invalid initialization of non-const reference of type &apos;const int*&amp;&apos; from a &lt;br&gt;&amp;gt;temporary of type &apos;const int*&apos; &lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt;Из чего несложно понять, что нужно делать так: &lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt;&#091;code&#093;const int* const&amp; refcpint = &amp;cint;&#091;/code&#093; &lt;br&gt;&amp;gt;&lt;br&gt;&lt;br&gt;Вот... поясните как читается const int* const&amp; refcpint это константная ссылка на указатель на константу целого типа или же это ссылка на константный указатель на константу целого типа? и почему не подходит мой вариант, а точнее вариант липпмана? &lt;br&gt;&lt;br&gt;</description>
</item>

<item>
    <title>Ссылки, константы, указалели... тонкий момент (jd2)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/7690.html#1</link>
    <pubDate>Fri, 07 Nov 2008 11:35:23 GMT</pubDate>
    <description>&amp;gt;const int cint = 5; // Целочисленная константа &lt;br&gt;&amp;gt;const int *&amp;refInt = &amp;cint; // а вот тут не работает, почему &lt;br&gt;&lt;br&gt;Надеюсь, это у Вас хотя бы аргументы функции, а не автоматические переменные таких чуднЫх типов... :)&lt;br&gt;Ближе к делу: компилятор ведь обычно не говорит просто, &quot;ну не шмагла&quot;, он обычно говорит, в чём именно проблема. С данным примером я получил:&lt;br&gt;&lt;br&gt;error: invalid initialization of non-const reference of type &apos;const int*&amp;&apos; from a temporary of type &apos;const int*&apos;&lt;br&gt;&lt;br&gt;Из чего несложно понять, что нужно делать так:&lt;br&gt;&lt;br&gt;&#091;code&#093;const int* const&amp; refcpint = &amp;cint;&#091;/code&#093;&lt;br&gt;&lt;br&gt;А вообще, когда я вижу что-то подобное, у меня возникает стойкое ощущение, что с кодом что-то не так. То есть, IMHO не всё, что позволяется синтаксисом языка, есть хорошо.&lt;br&gt;</description>
</item>

</channel>
</rss>
