程序文档格式.docx

上传人:b****6 文档编号:17256503 上传时间:2022-11-29 格式:DOCX 页数:49 大小:23.62KB
下载 相关 举报
程序文档格式.docx_第1页
第1页 / 共49页
程序文档格式.docx_第2页
第2页 / 共49页
程序文档格式.docx_第3页
第3页 / 共49页
程序文档格式.docx_第4页
第4页 / 共49页
程序文档格式.docx_第5页
第5页 / 共49页
点击查看更多>>
下载资源
资源描述

程序文档格式.docx

《程序文档格式.docx》由会员分享,可在线阅读,更多相关《程序文档格式.docx(49页珍藏版)》请在冰豆网上搜索。

程序文档格式.docx

endl;

};

~num(){cout<

调用析构函数"

intget()const{returnn;

}

voidset(intx){n=x;

voidadd(){++n;

//operator++();

private:

intn;

intmain()

numi;

cout<

i="

i.get()<

i.add();

return0;

voidoperator++(){n=100;

i++;

 

numoperator++()

{

numt;

n++;

t.set(n);

returnt;

};

++i;

numf=++i;

f="

f.get()<

创建无名临时对象

无参调用构造函数"

num(inti){n=i;

有参调用构造函数"

returnnum(n);

n<

取消临时对象

return*this;

num(constnum&

s){n=s.n;

复制构造函数"

cout<

//用*this替换为num(n),用构造函数创建的临时对象来替换*this指针,它所指向的是原始对象

//用this对象来替换创建一个临时对象,这样返回的自加以后的原始对象,而不是不是临时对象,

//因此不用调用带有参数的构造函数,

numf;

f=++i;

//返回的是自加以后的原始对象,而不是临时对象,因此不用调用带有参数的构造函数

//将返回的原始对象赋给了新建的对象f,因此会调用复制构造函数来进行对象i到对象f成员X的复制

num(constnum&

s){this->

n=s.n;

s){cout<

n="

this->

为什么="

s.n<

this->

//因为不会改变,别名的值,因此将之改为const的变量

自增后的"

//为什么不返回成员变量执行的自加后的对象呢

//num(n)为构造函数创建的临时对象

//将之替换为this指针,他所指向原始对象

//没创建一个对象都要调用构造函数来为该对象开辟内存空间

//而销毁对象则要调用析构函数来释放内存

//每一次创建对象都要牺牲一定的内存空间和一定的速度

//而且我们要执行的也只是对象的成员变量,为什么我们不返回成员变量自加后的对象呢

s)

//返回的是自加以后的原始对象,而不是临时对象

numn=++i;

//将返回的原始对象赋给了新建的对象f

//因此会调用复制构造函数来执行对象i到对象n的成员值的复制

n.get()<

constnum&

operator++()

constnumoperator++(intq)

numtemp(*this);

returntemp;

numn=i++;

//将原始对象的值也就是成员拷贝到临时对象temp中,这一步可以调用复制构造函数来完成

//在为这个复制构造函数,我们要传递一个对象,这个对象是this对象,也就是原始对象

//这个this对象是operator++这个函数进行自加的当前对象,再将当前对象的数据拷贝到这个临时对象

//对this他的成员进行自加相当于this->

++n;

//返回临时对象

//因为返回的是一个临时对象,这个临时对象在超出作用域后就被析构掉了

//如果按引用的方式返回的话,则返回的是一个空的对象,

//那么要按值的方式返回呢

运算符重载的问题:

intoperator+();

与int&

operator+();

有什么区别?

2008-02-2912:

49提问者:

lin1270 

|浏览次数:

1665次

问题补充:

能有具体的例子说明更好!

~~~如果换成Sampleoperator+();

与Sample&

opetator+();

呢?

其中Sample是类名...

满意回答

2008-02-2914:

07热心网友

intoperator+()这个表明这个是重载的+运算符,因为重载的操作符需要定义成非成员函数,一般都定义为友元

所以需要返回一个对象,而

int&

operator+()应该是内置的+操作符,它只要返回一个成员变量的引用即可

基本数据类型不能重载操作符,下面举个Item类的例子说明如下:

Itemoperator+(constItem&

left,constItem&

right)

{Itemtemp;

temp.data=left.data+right.data;

returntemp;

Item&

operator+(con

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 其它课程

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1