Ich verstehe nicht, warum ich (mit g ++ oder Klirren ++) keine Warnung erhalten für eine NULL als ein Objekt in newtstr()
unten Rückkehr:keine Warnung erhalten, wenn NULL als Objekt der Rückkehr
#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
$
ich jedoch erhalten einen Laufzeitfehler:
$ ./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
Sie haben diesen Schlag ++ getaggt. Gilt das auch für den Klang? –
Warum erwarten Sie eine Warnung? Es ist ein gültiges Konstrukt. – ZDF
@ZDF OP ist sich entweder der impliziten 'const char *' Cast nicht bewusst, oder er würde erwarten, dass sein Compiler "hey, das ist ein statischer Ausdruck, der mir einen Nullzeiger gibt, mit dem der' string' ctor versucht, Sachen zu tun sollte es mich davor warnen! ". –