C语言中协变返回值类型究竟是如何实现和定义的?