练习19.14
下面的代码合法吗?如果合法,代码的含义是什么?如果不合法,解释原因。
auto pmf = &Screen::get_cursor;
pmf = &Screen::get;
解答:
合法:
(1) pmf是一个指针,他可以指向Screen的某个常量的成员函数。这里他指向了get_cursor函数。
(2) pmf指向了get函数。
练习19.15
普通函数指针和指向成员函数的指针有何区别?
解答:
【引用】和普通指针不同的是,在成员函数和指向改成员的指针之间不存在自动转换规则。
练习19.16
声明一个类型别名,令其作为指向Sales_data的avg_price成员的指针的同义词。
解答:
using avg_price_pointer = double (Sales_data::*)() const;
avg_price_pointer p = &Sales_data::avg_price;
练习19.17
为Screen的所有成员函数类型各定义一个类型别名。
解答:
using get_pointer1 = char (Screen::*)() const;
using get_pointer2 = char (Screen::*)(Screen::pos, Screen::pos) const;
get_pointer1 p1 = &Screen::get_cursor;
get_pointer1 p2 = &Screen::get;
get_pointer2 p3 = &Screen::get;