使用 = 运算符和对象的 C++

c++ using the = operator with objects

本文关键字:C++ 对象 运算符 使用      更新时间:2023-10-16

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,但我不确定。

任何详细说明将不胜感激,谢谢。

当你在这里键入object1 = object2;时,它会调用=运算符重载函数,如果operator overloading function for 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;
}