我在Python的某處讀到@classmethod
類似於C++中的靜態成員函數。但C++中的等效cls
參數是什麼?我如何傳遞它?如何在C++類中使用static關鍵字來模擬Python中@classmethod的行爲?
下面是使用繼承和@classmethod
一個Python代碼,
class Parent():
def __init__(self, name):
self._name = name
@classmethod
def produce(cls, name):
return cls(name)
def say_my_name(self):
print("I am parent", self._name)
class Child(Parent):
def say_my_name(self):
print("I am child", self._name)
p1 = Parent("One")
p1.say_my_name()
p2 = Parent.produce("Two")
p2.say_my_name()
p1 = Child("One")
p1.say_my_name()
p2 = Child.produce("Two")
p2.say_my_name()
,現在我停留在我的不完整的C++代碼如下
class Parent
{
protected:
std::string name;
public:
Parent(const std::string& name): name{name} {};
// Can I not use static in the next statement?
// Parent is already hard-coded, what's the cls in C++?
static Parent produce(const std::string& name) const
{
return Parent {name};
}
void say_my_name() const
{
std::cout << "I am parent " << name << "\n";
}
};
我如何用C模仿我的Python代碼++ ?
「但是什麼是C++中等價的'cls'參數」 - 沒有等價的。 – user2357112