″梦里花 发表于 2013-10-7 10:53:27

C++重载运算符问题

#include "iostream"

using namespace std;

class MyClass
{
public:
        MyClass()
        {
                n=0;
                cout<<"默认构造函数...\n";
        }
        MyClass(int t)
        {
       n=t;
                   cout<<"默认带一个参数构造函数...\n";
        }
        ~MyClass()
        {
                        cout<<"默认析构函数...\n";
        }
        int get()
        {
                return n;
        }
        MyClass(MyClass&r)
        {
                n=r.get();
                cout<<"复制构造函数\n";
        }

private:
        int n;
};


int main()
{
        MyClass a(1), b(2);
   a=b;
        cout<<"a:"<<a.get()<<endl;
        cout<<"b:"<<b.get()<<endl;
        return 0;
}这次是关于赋值运算符的重载实现对象间的赋值运算。
我想问一下我在类中并没有声明一个重载=函数,编译器这个时候是不是默认提供了一个。
还有复制构造函数是不是只能用到对象的初始化时候上。{:1_1:}

仰望天上的光 发表于 2013-10-7 11:52:43

我想问一下我在类中并没有声明一个重载=函数,编译器这个时候是不是默认提供了一个。
是的。

还有复制构造函数是不是只能用到对象的初始化时候上。
我们知道,复制构造函数是一种构造函数,构造函数智能用于初始化对象。所以,复制构造函数只能用于初始化对象。

″梦里花 发表于 2013-10-7 12:05:39

仰望天上的光 发表于 2013-10-7 11:52 static/image/common/back.gif
我想问一下我在类中并没有声明一个重载=函数,编译器这个时候是不是默认提供了一个。
是的。



{:1_1:} 嘿嘿 又是你帮我解答问题了 感觉论坛好有爱啊

骇客不会飞 发表于 2013-10-7 12:32:18

类的赋值好像有默认的,如果类中还包含有指针,用默认的赋值将可能导致一些问题
复制构造函数其实就是一个构造函数,构造函数的的功能就是初始化对象。
我也是一名新手,这是我的分析,不知道对不对:lol:

″梦里花 发表于 2013-10-7 12:47:59

骇客不会飞 发表于 2013-10-7 12:32 static/image/common/back.gif
类的赋值好像有默认的,如果类中还包含有指针,用默认的赋值将可能导致一些问题
复制构造函数其实就是一个 ...

默认复制构造函数包含指针的话需要深层复制这个我知道   
页: [1]
查看完整版本: C++重载运算符问题