Code
4.11.3 const_cast
int main()
{
int a = 5;
const int* pa = &a;
int* p = const_cast<int*>(pa);
*p = 10;
cout << "a = " << a << " p = " << *p << endl;
const int b = 5;
const int* pb = &a;
int* p2 = const_cast<int*>(pb);//正确,但通过p2写值是未定义的行为
*p2 = 10;
cout << "b = " << b << " p2 = " << *p2 << endl;
return 0;
}
输出结果为:
a = 10 p = 10
b = 5 p2 = 10
Homework
Test 4.10
int main()
{
int val;
while (cin >> val)
{
if (val == 42)
break;
}
return 0;
}
Test 4.11
int main()
{
double a = 1.0, b = 0.5, c = 0.2, d = 0.1;
if (a > b && b > c && c > d)
cout << "perfect!" << endl;
return 0;
}
Test 4. 21
int main()
{
vector<int> ivec = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
for (auto& i : ivec)
{
i = (i % 2 == 1) ? i * 2 : i;
cout << i << ' ';
}
return 0;
}
Test 4.28
int main()
{
cout << "bool所占空间大小为:" << sizeof(bool) << endl;
cout << "char所占空间大小为:" << sizeof(char) << endl;
cout << "wchar_t所占空间大小为:" << sizeof(wchar_t) << endl;
cout << "short所占空间大小为:" << sizeof(short) << endl;
cout << "int所占空间大小为:" << sizeof(int) << endl;
cout << "long所占空间大小为:" << sizeof(long) << endl;
cout << "long long所占空间大小为:" << sizeof(long long) << endl;
cout << "float所占空间大小为:" << sizeof(float) << endl;
cout << "double所占空间大小为:" << sizeof(double) << endl;
cout << "long double所占空间大小为:" << sizeof(long double) << endl;
cout << "指针类型所占空间大小为:" << sizeof(char *) << endl;
return 0;
}