我明白,函數不應該返回對自動變量的引用。 但是我只是想了解常量對象的存儲位置,即它是否與靜態全局變量一起存儲在內存段中。const對象存儲在哪裏
這是Visual Studio 8上的代碼。它看起來像const對象存儲爲自動變量。我是否假設事情是正確的?或者是具體實現還是取決於構造函數是否微不足道?
如果有人能夠解釋爲什麼每個案例的行爲方式都是如此,那將會非常棒。
//here i'm intentionally returning a ptr to local const ptr hope the syntax is right
const char* const* get_const_char_ptr() {
const char * const ptr = "downontheupside";
return &ptr;
}
const int& get_const_int() {
const int magic_number = 20;
return magic_number;
}
const string& get_const_string() {
const string str("superunknown");
return str;
}
const string* get_const_string_ptr() {
const string str("louderthanlove");
return &str;
}
int main() {
//case1
const int &i = get_const_int();
cout<<"case1:"<<i<<endl;
//case 2
const char * const* c =get_const_char_ptr();
cout<<"case2:"<<*c<<endl;
//case3
const string &str = get_const_string();
//this crashes
//cout<<"case3:"<<str<<endl;
return 1;
}
wha ...沒有badmotorfinger?!? – justin 2011-02-18 05:07:00
不知道我是如何錯過:) – keety 2011-02-18 22:11:51