有如下类定义: class MyClass { public: MyClass(double d=0.0):val(d) { } ______________ /

admin2019-04-18  28

问题 有如下类定义:
        class MyClass {
        public:
            MyClass(double d=0.0):val(d) { }
            ______________        //后缀自增运算符++的声明
        private:
            double val;
        };
若要使语句序列
        MyClass x(2.1),y;
        y=x++;
能够正常运行,横线处的语句应为

选项 A、MyClass& operator++();
B、MyClass& operator++(MyClass&,int);
C、MyClass operator++(int);
D、MyClass operator++();

答案C

解析 横线处填写的语句,是重载后缀自增运算符++的函数声明,为了与内置类型一致,后缀自增运算符应该返回旧值,即尚未自增的值,并且应该作为值返回,而不是返回引用,选项A、B错误;另外为了区分运算符的前缀和后缀形式,后缀运算符重载函数需要接受一个额外的int型形参,选项D错误;答案为C。
转载请注明原文地址:https://kaotiyun.com/show/VdAp777K
0

最新回复(0)