C ++ Primer第5版:演習2.27 2.28 2.29 2.30 2.31 2.32

演習2.27
(a)不正な、参照にバインドされたオブジェクトをリテラル定数にバインドできない
(b)正当な、基になるconstポインターが定数を
参照する(c)不正な、参照をリテラル定数にバインドできない
(d)正当な、ポインターは両方最上層は最下層でもありますconst
(e)は合法であり、下のconstはポインタ
(f)が指すオブジェクトを変更できません。参照は初期化されません(バインドされたオブジェクト)、参照自体はオブジェクトではありません
( g)合法

演習2.28
(a)は不正であり、ポインターは初期化される最上位のconstであり、
(b)は不正であり、p2ポインターは初期化される最上位
の定数であり、(c)は不正であり、定数icは初期化されません。 r参照はその値を変更できません
(d)は不正です。ポインターは初期化される最上位のconstです
(e)正当です、最下位のconstポインター

演習2.29
(a)非定数への合法的な定数割り当て
(b)違法、オブジェクト定数へのポインターを非低レベルconstポインター
に割り当てることはできません(c)違法、定数を非低レベルconstポインターに割り当てることはできません
(d)リーガル
(e)リーガル、トップレベルのconstポインター(オブジェクトの値は変更可能
)は通常のポインター(f)に割り当てることは合法ではなく、icは定数であり、変更できません

演習2.30

#include<iostream>

int main()
{
    
    
	int i = 0;
	const int v2 = 0;
	int v1 = v2;
	int* p1 = &v1, & r1 = v1;
	const int* p2 = &v2, * const p3 = &i, & r2 = v2;
}

v2 top const
v1 bottom const
p1 r1 bottom const
p2 bottom const
p3 bottom top const
r2 bottom const

演習2.31r1
= v2は有効であり、最上位のconstは通常の参照にコピーされ、最上位は渡されません
p1 = p2は無効であり、最下位のconstポインターを最下位以外のレベルに割り当てることはできませんconstポインター
p2 = p1は有効であり、通常のポインターを最下位レベルのconstポインターに割り当てることができます
p1 = p3は有効ではなく、基になるconstポインターを非低レベルのconstポインターに割り当てることはできません
p2 = p3は有効です、基になるconstポインターを割り当てることができます

演習2.32

#include<iostream>

int main()
{
    
    
	int null = 0, * p = &null;
}

違法、上記のように変更

おすすめ

転載: blog.csdn.net/Xgggcalled/article/details/108916866