作者gecer (gecer)
看板C_and_CPP
標題[問題] "::"符號的使用
時間Sat Dec 23 20:26:04 2017
從C++ 的參考資料 namespace 及 class內的static member 才可以用 "::"
但是下列的code 上色部分卻可使用 且指向class base的member function
想請問 "::"的使用規則?
#include <iostream>
using namespace std;
class MyC
{
public:
int getValue() { return 1; } // static member function
};
class MyC1:public MyC
{
public:
int getValue() { return 2; } // static member function
};
int main()
{
MyC c;
MyC1 c1;
MyC1 *p;
p=&c1;
cout<<p->getValue()<<endl;
cout<<p->MyC::getValue()<<endl; //why :: could be used here
return 0;
}
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 122.121.28.185
※ 文章網址: https://webptt.com/m.aspx?n=bbs/C_and_CPP/M.1514031967.A.7FF.html
※ 編輯: gecer (122.121.28.185), 12/23/2017 20:27:23
1F:→ loveflames: 並沒有限static成員 12/23 20:48
2F:→ loveflames: 黃字那行是說要用父類成員 12/23 20:49
3F:→ loveflames: 還有一件事,函數不是virtual,表示子類不該改寫 12/23 20:53
4F:推 s4300026: 他這樣寫應該是 “遮蔽” = new,編譯器應該給warning 12/24 10:32
5F:推 s4300026: 你有想過override後要怎麼使用父類別的方法嗎,就是用:: 12/24 10:34
6F:→ hunandy14: 詳細表明要使用哪個類別的方法 12/24 11:49