#include <vector>
using std::vector;
class A
{
public:
A()
{
buf.push_back(65);
buf.push_back(66);
buf.push_back(67);
}
~A(){}
const char * getA() const
{
// why never run here?
return &buf[0];
}
const char * getA()
{
return &buf[0];
}
char * getB() const
{
// why compile error?
return &buf[0];
}
char * getB()
{
return &buf[0];
}
private:
vector<char> buf;
};
int main()
{
A a;
const char * pc = a.getA();
const char * const cp = a.getA();
char * p = a.getB();
}
兩個問題:返回指向矢量數據的指針的最佳方法是什麼? const或非const?
1>爲什麼會有編譯錯誤?
2>爲什麼
爲const char *木屐()const的
永遠不會被調用?(在我看來,這一次應該先叫的,因爲我不會改變對象)
我已debuged到矢量類的實現,並發現 的
參考操作符[](SIZE_TYPE _Pos)const的 {...}
叫,不
操作者爲const_reference [](SIZE_TYPE _Pos)const的{...}
one。
PS:我使用VS2010。
在C++ 0x中,您可以簡單地使用向量的'data'成員函數。 –
Alf:反對只是在做'&v [0]'? – rubenvb