class Foo
{
public:
static std::vector<std::string> Foo(std::string x, std::string y);
};
我被要求实现上面代码中所示的方法;他们只向我提供了原型。
但是,正如你所看到的,它不是任何一种方法。它是构造函数。
我知道在C ++中我们可以找到一个解决方法(使用嵌套类或其他类),以获得静态构造函数。
但是我生命中从未见过的是一个构造函数返回(在本例中)一个向量容器。
这在C ++中是否可行?
或者,也许,我误解了代码?
答案 0 :(得分:2)
不,代码是无效的C ++。请尝试编译代码,编译器会告诉你到底出了什么问题:
error: return type specification for constructor invalid
static std::vector<std::string> Foo(std::string x, std::string y);
^
error: constructor cannot be static member function
答案 1 :(得分:1)
该代码在C ++中是非法的,没有C ++编译器可以编译它。
static
答案 2 :(得分:1)
答案是正确的:构造函数无法返回。
还有几点:
@保罗。实际上,可以用C ++模拟静态构造函数。 StackOverflow中有几篇关于此主题的帖子。
@Paul和@WhiZTiM:静态构造函数不仅可以被模拟,而且可以在C ++中合法使用,例如,在设计良好的Singleton实现中。
我不会在这里讨论十几个Singleton实现,它们不是线程安全的。
但是,通过C ++ 11(call_once,once_flag)引入的功能,您可以实现一个线程安全的Singleton,为此,您还需要一个静态构造函数(必须是私有的,以及一个私有的复制构造函数和其相应的赋值运算符)。
答案 3 :(得分:0)
构造函数不能是静态的。如果是,它将无法访问类的成员来初始化它们,这是构造函数的目的。
为什么不使用独立功能?