欢迎使用6miu-markdown编辑器

    xiaoxiao2021-03-25  215

    今天给一个学生调试 c++ 代码。 他的代码大致如下。

    #include <iostream> uisng namepsace std; void move(long n) { ..... } int main() { long n; cin >> n; ... move(1); move(n); ... return 0; }

    然后发现死活 move(1) 进不去。。。。想了一下。这是一个特别神奇的事情。。。。 c++11 里面自带一个 move() 函数。由于定义的是move(long n)。调用move(n)会正确优先匹配定义的函数。但是调用move(1)的时候编译器会去找一个move(int)的函数,所以先找到了系统中匹配的move函数。如果没有开 c++11 ,move(1)的 1 会被强制转换成(long)1 然后调用move(long)。所以尽量不要自定义系统函数。

    转载请注明原文地址: https://ju.6miu.com/read-1262.html

    最新回复(0)