C ++练习:重写旧式转换以使用命名转换?

时间:2014-08-10 23:49:13

标签: c++ casting

我从" C ++ Primer",第5版学习C ++。

在第4章,练习4.37要求如下:

  

重写以下每个旧式转换以使用命名转换:

int i; double d; const string *ps; char *pc; void *pv;

(a) pv = (void*)ps;
(b) i = int(*pc);
(c) pv = &d;
(d) pc = (char*) pv;

这是我的解决方案:

#include <string>
using std::string;

int main()
{
    char c = 'a'; string s = "Hello";
    int i = 2; double d = 2.24;
    const string *ps = &s; char *pc = &c; void *pv = nullptr;

    pv = const_cast<string*>(ps);   // remove constness
    i = static_cast<int>(*pc);      // convert char to int
    pv = &d;    // assign the address of  variable d to the void pointer
    pc = static_cast<char*>(pv);    // convert void pointer to char pointer 
                                   // and assign it to pc pointer

    return 0;
}

由于练习的答案不可用,你能否告诉我上述解决方案是否正确?

0 个答案:

没有答案