我在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