c ++使用=运算符和对象

时间:2018-01-28 03:52:41

标签: c++ object operators

在C ++中继续让我困惑的一个操作是operator =如何与对象交互。 我不确定在执行这样的程序时幕后究竟发生了什么:

class ObjectType {
    private:
        int variable;
    public:
        ObjectType(int v) {
            variable = v;
        }
};

int main() {
    ObjectType object1(10);
    ObjectType object2(15);

    object1 = object2;

    return 0;
}

根据我的理解,它使第一个对象中的所有成员变量等于第二个对象中的相应成员变量。在这种情况下,object1的“变量”现在等于15,但我不确定。

非常感谢您的任何阐述,谢谢。

1 个答案:

答案 0 :(得分:0)

当您键入object1 = object2;时,如果=的{​​{1}}不是operator overloading function,则会调用assignment operator运算符重载函数 已定义,然后编译器为我们by-default执行此操作,编译器只执行从一个对象另一个对象成员智能复制

这是基本代码:

class ObjectType {
        private:
                int variable;
        public:
                ObjectType(int v) {
                        variable = v;
                }
                void operator () (int n1){ /** () operator overloaded function if needed **/
                        variable = n1;
                }
};

int main() {
        ObjectType object1(10);//parameterized constructor will be called  
        ObjectType object2(15);
     /** use case when () operator overloaded function will be called
         ObjecType object1;
         object1(10);// invokes () overloaded function 
     **/

        object1 = object2;/** if = operator overloaded function is not defined then consider default one provided by compiler */
        return 0;
}