gpt4 book ai didi

c++ - c++中的构造函数使用[]而不是括号创建对象

转载 作者:行者123 更新时间:2023-11-30 02:26:22 26 4
gpt4 key购买 nike

有什么方法可以实现接受大括号而不是方括号的构造函数?
例如

class MyString
{
char *x;
int n;
};

int main()
{
MyString instance[10];
return 0;
}

顺便说一句,我理解括号的概念,我们不能像这样声明一个方法。但我只是想知道是否有办法做到这一点?

最佳答案

没有。只能使用 (){} 调用构造函数。您可以通过重载 operator[] 创建一个接受一个参数的工厂函数,但这将是对功能的滥用,违反了最佳实践并且会违背用户期望。

这是我的意思的一个例子(并且不推荐):

struct foo {
int value = {};
};

struct foo_factory {
foo operator[](int v) const {
return foo{v};
}
};

int main() {
foo f = foo_factory()[42];
}

关于c++ - c++中的构造函数使用[]而不是括号创建对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42885664/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com