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

编译器使用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的自定义类时,做了什么操作导致程序运行时崩溃?

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 前言: 详细介绍: List:元素有放入顺序,元素可重复Map:元素按键值对存储,无放入顺序Set:元素无放入顺序...
    YBshone阅读 8,851评论 0 17
  • STL(标准模板库),是目前C++内置支持的library。它的底层利用了C++类模板和函数模板的机制,由三大部分...
    岁与禾阅读 39,371评论 3 132
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 34,149评论 18 399
  • 用这个标题,我很担心,担心没有合适的专题可投,只能收入自己的专题。 同时担心会遭到读此文章的朋友的狂喷,虽然我不是...
    武陵清泉阅读 353评论 14 11
  • “你要是再疏忽我,我就是再喜欢你也会消磨殆尽的。” 是的,说不清的情绪,心里很难受,忍不住流泪。是的,看小说看到这...
    花田一阅读 145评论 0 0

友情链接更多精彩内容