我只需要在這個主題上進行一次複習,但我不能在網上找到答案。C++ - 類與命名空間
如果你調用一個類Dog
class Dog
{
public:
void Dog::woof()
{
return;
}
};
必備
Dog
開始與Dog::
內的每一個功能?這就是我一直這樣做,但我想問的是任何情況不是這樣的情況?如果我不把Dog::
這是否意味着它可以像使用Java的靜態方法一樣使用?防爆。Dog.woof();
代替myDogObj.woof();
請問,我們使用的是
::
運營商意味着Woof
是在Dog
命名空間,即使Dog
不是一個命名空間中的事實呢?如果這是真的,這是否意味着類自動創建自己作爲命名空間?爲什麼我們把
Dog::
告訴C++,它是屬於Dog
的方法,而張女士它是class Dog
內基本上是說了嗎?這不是多餘的嗎?是否有任何可以在命名空間或嵌套命名空間內聲明
Dog::woof
的情況?防爆。Park::Trail::Dog::woof() { return; }
你必須做的:
class Dog
{
public:
namespace Park
{
namespace Trail
{
void Dog::woof()
{
return;
}
}
}
};
最後一個例子是無稽之談,你不能在類的名字空間*裏面。 – molbdnilo
如果我要在類中聲明'woof',那麼在類的外部定義它,但是我把這個函數定義放在一個名稱空間中呢?防爆。 '命名空間Park {void Dog :: woof(){return; }}' – Hatefiend
除非'Park'聲明在'Park'命名空間中,否則它將不起作用。 Jus試試吧,你會看到的。 – Ceros