5
更好通過爲例進行了說明:分配一個臨時一個const REF構件使分割故障
tok.h
#include <string>
static const char* defaultDelim = ".,;";
class Tokenizer {
public:
Tokenizer():
// 'delim' is the const ref member that is initialized by the temp string
delim((altDelim.size())? altDelim : std::string(defaultDelim))
{}
size_t scan(const std::string& str)
{ return str.find_first_of(delim); }
static void setDelim(const std::string& d) { altDelim = d; }
private:
static std::string altDelim;
const std::string& delim;
};
的main.cpp
#include <iostream>
using namespace std;
#include "tok.h"
std::string Tokenizer::altDelim;
int main()
{
Tokenizer tok;
size_t pos = tok.scan("hello, world");
cout << pos << endl;
}
的程序打印0這是錯誤的。真正的代碼會得到一個seg錯誤。
我期望延長分配給const引用的temp的生命期限的規則在這裏可以保留,但顯然它不是。你知道原因嗎?
現貨上,我不明白爲什麼沒有upvotes爲此。今天緩慢的一天。 :( – 2012-07-07 16:55:05
簡潔而全面,非常感謝! – davka 2012-07-07 17:05:52