C++ 下标[]运算符的默认值?

C++ 下标[]运算符的默认值?,c++,operator-overloading,default,operator-keyword,C++,Operator Overloading,Default,Operator Keyword,我想为我的数组类提供一个PHP风格的push_-back特性: arrayT<int> arr; arr[] = 10; // == std::vector::push_back() 这可能吗? 如果是,是否也可以与其他运营商合作 运算符函数不能有默认参数(8.3.6),除非下面明确说明 运算符[]应为具有一个参数的非静态成员函数 唯一允许具有默认参数的运算符函数是operator()。您不能声明运算符[]不接受任何参数 所以,不,你所要求的是不可能的。即使可能,这也会非常混乱和不

我想为我的数组类提供一个PHP风格的push_-back特性:

arrayT<int> arr;
arr[] = 10; // == std::vector::push_back()
这可能吗? 如果是,是否也可以与其他运营商合作

运算符函数不能有默认参数(8.3.6),除非下面明确说明

运算符[]
应为具有一个参数的非静态成员函数

唯一允许具有默认参数的运算符函数是
operator()
。您不能声明
运算符[]
不接受任何参数


所以,不,你所要求的是不可能的。

即使可能,这也会非常混乱和不习惯。使用一个单独的方法,它更理智。为什么会让人困惑?@Virus721,因为程序员喜欢看到和使用他们熟悉的语法。这一点都不舒服。如果我正在阅读一些C++代码,看到了,我会想:“这里到底是什么样的邪恶黑客?”我必须阅读文档来弄清楚它在做什么。但是,如果它是一个名为
push_back
的函数,我会立即理解。如果内存可用,您甚至不能将其重载为不带参数。谢谢您的帮助。您可以将其包装为一个函数,将默认值转发给它。
arrayT::operator[]( size_t pos = (size_t)-1)