gpt4 book ai didi

c++ - 返回 NULL 作为对象时没有收到任何警告

转载 作者:太空狗 更新时间:2023-10-29 20:10:47 25 4
gpt4 key购买 nike

我不明白为什么在下面的 newtstr() 中返回 NULL 作为对象时没有收到警告(使用 g++ 或 clang++):

#include<iostream>
using namespace std;

string newstr();

int main()
{
string s = newstr();
cout << s << endl;
return 0;
}

string newstr()
{
return NULL;
}

.

$ g++ -Wall -Wextra -pedantic testptr.cpp
$

但是,我确实遇到运行时错误:

$ ./a.out
terminate called after throwing an instance of 'std::logic_error'
what(): basic_string::_S_construct null not valid
Aborted
$

.

$ g++ --version
g++ (GCC) 4.8.0

最佳答案

std::string 有一个 constructor basic_string( const CharT* s, const Allocator& alloc = Allocator() );它接受用于构造新字符串的 const char* 指针(参见 (5))。 return NULL; 行导致以 NULL 指针作为参数隐式调用该构造函数 - 这是有效代码,但显然无法正确运行。

关于c++ - 返回 NULL 作为对象时没有收到任何警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36828059/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com