曲径通幽论坛

标题: 对象赋值 [打印本页]

作者: beyes    时间: 2011-8-14 19:55
标题: 对象赋值
如果两个对象是同一种类型的,那么可以用其中一个给另外一个赋值。默认情况下,当一个对象被赋值给另一个对象时,第一个对象的数据被按位复制到第二个对象中。

示例程序:
[C++] 纯文本查看 复制代码


#include <iostream>
using namespace std;


class myclass {
    int a;
    int b;
public:
    void setab(int i, int j) { a = i, b = j; }
    void showab();
};


void myclass::showab()
{
    cout << "a is " << a << "\n";
    cout << "b is " << b << "\n";
}


int main()
{
    myclass ob1, ob2;
    ob1.setab(10, 20);
    ob2.setab(30, 40);
    cout << "ob1 before assignment: \n";
    ob1.showab();
    cout << "ob2 before assignment: \n";
    ob2.showab();


    ob2 = ob1;    //将对象ob1的值赋给ob2
    cout << "ob2 after assignment: \n";
    ob2.showab();


    return 0;
}


运行输出:
$ ./copyobj
ob1 before assignment:
a is 10
b is 20
ob2 before assignment:
a is 30
b is 40
ob2 after assignment:
a is 10
b is 20

默认情况下,赋值操作只是创建了一个完全相同的副本。但是需要注意的是,对象的赋值仅仅是使这些对象的值相等,但两个对象仍然是互相独立的。也就是说,修改一个对象中的值不会影响大另外一个对象。




欢迎光临 曲径通幽论坛 (http://www.groad.net/bbs/) Powered by Discuz! X3.2