| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 592 人关注过本帖
标题:请教问题........
只看楼主 加入收藏
x_wangyue
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:34
专家分:144
注 册:2010-8-30
结帖率:100%
收藏
已结贴  问题点数:30 回复次数:5 
请教问题........
大侠们谈哈自己对:
1。复制构造函数
2。赋值操作符
的见解。
要的是你们自己领悟的东西,不要照着书搬来的,谢谢!!!
2010-09-19 16:20
蛤蟆VS天鹅
Rank: 3Rank: 3
来 自:徐州
等 级:论坛游侠
威 望:1
帖 子:26
专家分:110
注 册:2010-8-22
收藏
得分:2 
兄弟,我对这些个也不懂,望大虾们讲讲,尤其是那个操作符,兄弟我在这先谢过大家了
2010-09-21 10:20
lintaoyn
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:4
帖 子:606
专家分:2499
注 册:2009-4-8
收藏
得分:18 
先从简单的来看
int a = 3;//这是复制初始化
int b(3);//这叫直接初始化
int c;//如果是全局对象刚初化为0。不是的话则不进行初始化,其值不确定。
c = 4;//这是赋值
可以理解成,在定义一个对象时马上为其指定一个值的行为是初始化。而赋值是初始化之后用=号指定对象值的行为。

//用类来观察会更清晰
#include<iostream>
using namespace std;
class A
{
public:
    A() : a(0)
    {
        cout << "默认构造函数被调用" << endl;
    }
    A(int i) : a(i)
    {
        cout << "构造函数被调用" << endl;
    }
    A(const A& b) : a(b.a)
    {
        int d;
        cin >> d;
        a += d;
        cout << "复制构造函数被调用" << endl;
    }
    A& operator= (const A& b)
    {
        a = b.a;
        cout << "重载的赋值操作符被调用" << endl;
        return *this;
    }
private:
    int a;
};
int main(int argc, char *argv[])
{
    A a;//输出 "默认构造函数被调用"
    A g = a;//输出"复制构造函数被调用"
    a = g;//输出"重载的赋值操作符被调用"
    A c = 9;//"构造函数被调用"
    return 0;
}
对A c = 9;来说先用9产生一个A类型的临时对象(调用A(int i) : a(i){}),然后使用复制构造函数来用c初始化。
但是因为编译器的优化功能,它会直接对c调用A(int i) : a(i){}进行初始化。

[ 本帖最后由 lintaoyn 于 2010-9-22 08:17 编辑 ]

迭代的是人,递归的是神。
2010-09-22 08:16
crazy_pro
Rank: 2
等 级:论坛游民
帖 子:13
专家分:12
注 册:2010-9-17
收藏
得分:10 
复制构造函数说白了就是对自定义的类型进行复制,至于怎么写要看你的你自己的复制要求。你需根据自己定义的类的类型定义你自己的复制构造函数当然系统也会自己生成一个!
赋值操作符说白了就是重载!
2010-09-24 12:56
zhj123
Rank: 2
等 级:论坛游民
帖 子:39
专家分:21
注 册:2010-8-31
收藏
得分:0 
hao
2010-09-24 22:51
零下八度
Rank: 2
等 级:论坛游民
帖 子:15
专家分:36
注 册:2010-9-14
收藏
得分:0 
感觉拷贝构造函数好麻烦  最近看何洁月的C++视频看的晕晕的。。。尤其那3方面应用的时候
2010-09-26 16:07
快速回复:请教问题........
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.020002 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved