[英]C++ - Namespaces with Classes
我只需要復習一下這個主題,但我真的無法在網上找到答案。
如果你有一個叫做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;
}
}
}
};
Dog 中的每個函數都必須以 Dog:: 開頭嗎? 我一直都是這樣做的,但我想問一下有沒有情況不是這樣的? 如果我不放 Dog:: 是否意味着它可以像 Java 中的靜態方法一樣使用? 前任。 Dog.woof(); 而不是 myDogObj.woof();
沒有方法必須在類定義內以Dog::
開頭,只能在類定義之外。
我們使用 :: 運算符的事實是否意味着 Woof 在 Dog 的命名空間中,即使 Dog 不是命名空間? 如果這是真的,這是否意味着類也會自動將自己創建為命名空間?
是的,在Dog
的范圍內。
為什么我們用 Dog:: 來告訴 C++ 它是一個屬於 Dog 的方法,而實際上它在類 Dog 內部這一事實本質上已經表明了這一點? 那不是多余的嗎?
是的,這就是為什么你不這樣做。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.