曲径通幽论坛

 找回密码
 立即注册
搜索
查看: 3012|回复: 0
打印 上一主题 下一主题

对象赋值

[复制链接]

4917

主题

5879

帖子

3万

积分

GROAD

曲径通幽,安觅芳踪。

Rank: 6Rank: 6

积分
34382
跳转到指定楼层
楼主
发表于 2011-8-14 19:55:42 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
如果两个对象是同一种类型的,那么可以用其中一个给另外一个赋值。默认情况下,当一个对象被赋值给另一个对象时,第一个对象的数据被按位复制到第二个对象中。

示例程序:
[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

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

本版积分规则

小黑屋|手机版|Archiver|曲径通幽 ( 琼ICP备11001422号-1|公安备案:46900502000207 )

GMT+8, 2024-5-18 03:01 , Processed in 0.060751 second(s), 23 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表