C ++返回类型的函数

时间:2017-08-26 15:25:47

标签: c++

function books_theme_parse_request( $query ) {
    global $wp;
    $current_url =  home_url( $wp->request );

    if (strpos($current_url, "/book" == false)) { return; }

    if(isset($query->query['post_type']) && $query->query['post_type'] == 'book'){
        global $wp_query;
        $wp_query->set_404();
        status_header( 404 );
        get_template_part( 404 ); exit();
    }

    if ( ! $query->is_main_query() || 2 != count( $query->query ) || ! isset( $query->query['page'] ) ) {
        return;
    }

    if ( ! empty( $query->query['name'] ) ) {
        $query->set( 'post_type', array( 'post', 'book', 'page' ) );
    }
}
add_action( 'pre_get_posts', 'books_theme_parse_request' );

作为一名计算机科学专业的学生,​​我想知道这个功能是如何运作的。在函数声明中,返回类型是对int的const引用,但是在函数内部我们传递的只是一个int,我读过的大部分介绍书都说返回类型应该与我们返回的匹配,任何人都可以帮助我理解究竟发生了什么?

1 个答案:

答案 0 :(得分:1)

  

在函数声明中,返回类型是对int的const引用,但在函数内部我们传递的只是一个

C ++具有隐式转换,例如:

double function(int n) {
  return n;
}

从int到double的隐式转换。

在您的情况下,您有从int到引用的转换。这是正确的并且编译,但在这种情况下,您的变量将被删除"在功能的最后。如果您以后使用它可能会出现问题,这被视为undefined behaviour