thời gian gần đây tôi thấy đoạn code dưới đây (phiên bản đơn giản đưa ra dưới đây) trong cơ sở mã của tôi và có nghi ngờ này:Con trỏ có thể tham chiếu và con trỏ tới biến thực được coi là giống nhau không?
class B;
class A
{
public:
A():m_A("testA"){}
B& getB()
{
return m_B;
}
B* getBPtr() //== > written to explain the problem clearly
{
return &m_B;
}
private:
B m_B;
};
class B
{
public:
B(const std::string& name):m_Name(name){}
std::string getName() const
{
return m_Name;
}
private:
std::string m_Name;
};
class C
{
public:
void testFunc(B* ptr)
{
}
};
int main()
{
A a;
C c;
c.testFunc(&a.getB()); ===> is it equivalent to c.testFunc(a.getBPtr()) ?
}
- Con trỏ để tham khảo và con trỏ đến biến thực tế có thể được coi là giống nhau không?
- Tiêu chuẩn có nói bất cứ điều gì về địa chỉ tham chiếu có thể hoán đổi cho nhau được sử dụng cho địa chỉ biến hay không.
Tôi rất vui vì bạn đã làm rõ điều đó. ;-) –
Hmmm ... Tôi vẫn còn nhầm lẫn với dòng từ tiêu chuẩn. Tôi đã giải thích rằng dòng từ tiêu chuẩn là ---- chúng ta không nên cố gắng để có con trỏ để tham khảo. có nghĩa là, địa chỉ của tài liệu tham khảo không được sử dụng. –
@aJ Không, nó chỉ có nghĩa là bạn không thể khai báo loại kiểu 'B & *'. –