请参阅下面的代码。在这段代码中,我将test.c_str()
返回的const char*
存储为参考。我的问题是 - data
是否会正确引用test
的内容?我在想,由test.c_str()
返回的ptr将是一个临时的,如果我将它绑定到引用将无效的引用。将临时指针绑定到引用
我的想法是否正确?
class RefPtrTest
{
std::string test;
StoringClass storingClass;
public:
RefPtrTest(): test("hello"), storingClass(test.c_str())
{
}
}
其中StoringClass是
class StoringClass
{
const char*& data;
public:
StoringClass (const char*& input): data(input)
{
}
}
EDIT1:
我们只是没有考虑什么的std :: string在做什么。假设我用我自己的所谓的myString类
class RefPtrTest
{
const mystring test;
StoringClass storingClass;
public:
RefPtrTest(): test("hello"), storingClass(test.getInternalPointer())
{
}
}
getInternalPointer
直接返回内部指针。我想验证这个假设,而由test.getInternalPointer()
返回的storingClass(test.getInternalPointer())
ptr将是一个临时的,如果我将它绑定到引用将无效的引用。我的想法是否正确?
EDIT2:
StoringClass不在我的控制之下。基本上它是一个模板类,它存储对类型的引用。我使用它为const char*
。我知道你提出的所有设计问题。但是我不能改变这个班级,所以我必须用它来做const char *
。没有别的办法。
我不明白为什么要存储对指针的引用而不是指针的副本。 – pmr 2010-04-01 14:11:05