有如下类定义: class MyClass { public: MyClass(const char *c=NULL); ~MyClass(); ___

admin2021-02-22  16

问题 有如下类定义:
        class MyClass {
        public:
            MyClass(const char *c=NULL);
            ~MyClass();
            ______________        //运算符=的声明
        private:
            char *p;
        };
若要使语句序列
        MyClass s1("test"),s2;
        s2=s1;
能够正常运行,横线处的语句应为

选项 A、friend MyClass& operator=(const MyClass&);
B、MyClass& operator=(const MyClass&);
C、MyClass& operator=(MyClass,const MyClass&);
D、friend MyClass& operator=(MyClass,const MyClass&);

答案B

解析 首先赋值运算符只能重载为成员函数,以便编译器可以知道是否需要合成一个,选项A、D错误;另外赋值运算符是二元运算符,左操作数是调用该赋值运算符的类对象,所以赋值运算符的重载函数的形参只需要右操作数,选项C中有两个形参,错误;答案为B。
转载请注明原文地址:https://jikaoti.com/ti/XFl0FFFM
0

最新回复(0)