c++ - 运算符重载中的显式构造?

标签 c++ constructor construction

是否可以使用运算符进行隐式构造?
就像这个例子(当然行不通):

class myFoo {
    public:
        double x, y;

        myFoo(double, double);

        void    operator [] (myFoo);
};

int main() {
    myFoo f1(0.0, 1.1);
    f1[ {9.9, 10.0} ];          /// or whatever syntax to use, does not work
    f1.operator[] ( {9.9, 10.0} ); /// works !
}

最佳答案

C++11 允许将初始化列表传递给重载的 operator [](请参阅 13.5.5)。

你需要这样的东西

void operator[](std::initializer_list<double>);

这将与 f1[ {9.9, 10.0} ]; 的原始语法相匹配。

关于c++ - 运算符重载中的显式构造?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7755376/

相关文章:

c++ - 使用 Boost Dijkstra 和指定的 MAX DISTANCE 查找最短路径

Java Pattern 类没有公共(public)构造函数,为什么?

c++ - 构造函数的巨型 switch 语句

constructor - 了解工厂构造函数代码示例 - Dart

c++ - 清空 C++ 对象

java - 使用 java.net.URL 在 java 中构建不正确的 URL?

c++ - 读取访问冲突代码 : 0xCDCDCDE1 and Code :0xCDCDCDE1

C++ - for 循环不运行

c++ - 使用 CRT 内存泄漏检测时出现编译错误

javascript - JavaScript 对象构造函数的问题,其中参数是其他对象