美文网首页
C++函数声明了返回值而不写return的后果

C++函数声明了返回值而不写return的后果

作者: krystollia | 来源:发表于2018-03-12 10:17 被阅读0次

    编译器使用bazel,mac系统下。

    程序1:

    vector <string> test() {
         cout << "test" << endl;
    }
    
    int main() {
        test();
        cout << "finished test" << endl;
    }
    

    运行时崩溃,输出内容:

    test
    Segmentation fault: 11
    

    将vector换成stl的其他容器 pair,map 也崩溃。

    程序2:

    class A {
      vector<string> s;
    };
    A test() {
         cout << "test" << endl;
    }
    int main() {
        test();
        cout << "finished test" << endl;
    }
    

    运行时崩溃。

    程序3:

    class A {
    };
    A test() {
         cout << "test" << endl;
    }
    
    int main() {
        test();
        cout << "finished test" << endl;
    }
    

    正常运行。

    程序4:

    string test() {
         cout << "test" << endl;
    }
    
    int main() {
        test();
        cout << "finished test" << endl;
    }
    

    正常运行。

    疑问一: 这样的程序应该在编译时报错?
    疑问二: 返回值是vector或者是包含了vector的自定义类时,做了什么操作导致程序运行时崩溃?

    相关文章

      网友评论

          本文标题:C++函数声明了返回值而不写return的后果

          本文链接:https://www.haomeiwen.com/subject/kjtnfftx.html