日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

C++中一个容易被忽视的名字查找规则

發(fā)布時(shí)間:2025/4/16 c/c++ 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C++中一个容易被忽视的名字查找规则 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
現(xiàn)在,有下面的代碼:
namespace lx1{class Point3d{public:Point3d (double dx, double dy, double dz): m_dX(dx), m_dY(dy), m_dZ(dz){}
double getX() const { return m_dX; };double getY() const { return m_dY; };double getZ() const { return m_dZ; };
private:double m_dX;double m_dY;double m_dZ;};
void TestPoint(const Point3d &pt){cout << "Output from lx1::TestPoint()." << endl;}}
namespace lx2{void TestPoint(const lx1::Point3d &pt){cout << "Output from lx2::TestPoint()." << endl;}
void ShowPoint3d(const lx1::Point3d &pt){TestPoint(pt);
cout << "X: " << pt.getX() << endl;cout << "Y: " << pt.getY() << endl;cout << "Z: " << pt.getZ() << endl;}}你能發(fā)現(xiàn)代碼中有什么問題嗎?上面的代碼看上去沒有什么問題,卻不能通過編譯,會(huì)得到一個(gè)“'lx2::TestPoint' : ambiguous call to overloaded function”的錯(cuò)誤。也就是說編譯器不能確定在ShowPoint3d()函數(shù)中調(diào)用的是哪個(gè)TestPoint()函數(shù)。也許你會(huì)非常不解,為什么會(huì)出現(xiàn)這樣的編譯錯(cuò)誤。在命名空間lx2中只有一個(gè)函數(shù)TestPoint(),為什么編譯器會(huì)不能確定調(diào)用哪個(gè)TestPoint()函數(shù)呢?雖然在命名空間lx1中有一個(gè)跟lx2中參數(shù)列表相同的TestPoint()函數(shù),可是在命名空間lx2中并沒有用using namespace lx1;這樣的語句,編譯器應(yīng)該不會(huì)去命名空間lx1中去匹配TestPoint()函數(shù)呀。事實(shí)上,出現(xiàn)編譯錯(cuò)誤的原因就是在命名空間lx1和lx2里面都有一個(gè)函數(shù)列表相同的TestPoint()函數(shù)。在C++中有這樣一個(gè)名字查找規(guī)則--如果在聲明函數(shù)的參數(shù)時(shí)使用了一個(gè)類,那么在查找匹配的函數(shù)名字時(shí),編譯器會(huì)在包含參數(shù)類型的名字空間中也進(jìn)行查找。在上面的代碼中,命名空間lx2中的TestPoint()函數(shù)參數(shù)是lx1::Point3d。按照上面的規(guī)則,編譯器在查找匹配的函數(shù)名字時(shí),也會(huì)去包含參數(shù)Point3d的名字空間(也就是lx1)中進(jìn)行匹配查找。而在命名空間lx1中也有一個(gè)參數(shù)列表跟命名空間lx2中一樣的TestPoint()函數(shù),所以會(huì)出現(xiàn)上面的編譯錯(cuò)誤。這是C++中一條非常容易被忽視的名字查找規(guī)則,因此要格外重視。

總結(jié)

以上是生活随笔為你收集整理的C++中一个容易被忽视的名字查找规则的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。