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

admin2021-06-10  24

问题 有如下类定义:
        class MyClass {
        public:
            MyClass(double d=0.0):val(d) { }
            ______________        //运算符函数-的声明
        private:
            double val;
        };
若要使语句序列
        MyClass y(4.6),z;
        z=6.7-y;
能够正常运行,横线处的声明语句应为

选项 A、friend MyClass operator-(MyClass&, MyClass&);
B、friend MyClass operator-(double, MyClass);
C、friend MyClass operator-(MyClass&, double);
D、friend MyClass operator-(double&, MyClass&);

答案B

解析 由调用函数6.7-y可知,double类型在运算符"-"的左边,应该作为运算符函数"-"的第一形参,选项A、C错误;由于运算符"-"函数并不改变操作数的状态,所以形参应该声明为const对象的引用,或者按值传递,参数按引用类型传递可能会改变操作数的状态,选项D错误;答案为B。
转载请注明原文地址:https://jikaoti.com/ti/REh0FFFM
0

最新回复(0)