看不懂一句话

put2006 2013-11-07 10:18:10
#include "stdafx.h"
#include <iostream>

class TDPoint//三维坐标
{
private:
int x;
int y;
int z;
public:
TDPoint(int x=0,int y=0,int z=0)
{
this->x=x;
this->y=y;
this->z=z;
}
TDPoint operator++();//成员函数重载前置运算符++
TDPoint operator++(int);//成员函数重载后置运算符++
friend TDPoint operator++(TDPoint& point);//友元函数重载前置运算符++
friend TDPoint operator++(TDPoint& point,int);//友元函数重载后置运算符++
void showPoint();
};

TDPoint TDPoint::operator++()
{
++this->x;
++this->y;
++this->z;
return*this;//返回自增后的对象
}

TDPoint TDPoint::operator++(int)
{
TDPoint point(*this); //这句话的意思,有这么实例化一个类的吗????
this->x++;
this->y++;
this->z++;
return point;//返回自增前的对象
}

TDPoint operator++(TDPoint& point)
{
++point.x;
++point.y;
++point.z;
return point;//返回自增后的对象
}

TDPoint operator++(TDPoint& point,int)
{
TDPoint point1(point); //这句话的意思,有这么实例化一个类的吗????
point.x++;
point.y++;
point.z++;
return point1;//返回自增前的对象
}

void TDPoint::showPoint()
{
std::cout<<"("<<x<<","<<y<<","<<z<<")"<<std::endl;
}

int main()
{
TDPoint point(1,1,1);
point.operator++();//或++point
point.showPoint();//前置++运算结果

point=point.operator++(0);//或point=point++
point.showPoint();//后置++运算结果

operator++(point);//或++point;
point.showPoint();//前置++运算结果

point=operator++(point,0);//或point=point++;
point.showPoint();//后置++运算结果

return0;
}

TDPoint point(*this);
TDPoint point1(point);
有这么实例化一个类的吗??书上没看到过,有没有资料
...全文
202 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
SKATE11 2013-11-08
  • 打赏
  • 举报
回复
拷贝构造函数啊 这里是按++操作符的运算规则来弄的 前++和后++不一样
赵4老师 2013-11-08
  • 打赏
  • 举报
回复
计算机组成原理→DOS命令→汇编语言→C语言(不包括C++)、代码书写规范→数据结构、编译原理、操作系统→计算机网络、数据库原理、正则表达式→其它语言(包括C++)、架构…… 对学习编程者的忠告: 眼过千遍不如手过一遍! 书看千行不如手敲一行! 手敲千行不如单步一行! 单步源代码千行不如单步对应汇编一行! 单步类的实例“构造”或“复制”或“作为函数参数”或“作为函数返回值返回”或“参加各种运算”或“退出作用域”的语句对应的汇编代码几步后,就会来到该类的“构造函数”或“复制构造函数”或“运算符重载”或“析构函数”对应的C/C++源代码处。 VC调试时按Alt+8、Alt+7、Alt+6和Alt+5,打开汇编窗口、堆栈窗口、内存窗口和寄存器窗口看每句C对应的汇编、单步执行并观察相应堆栈、内存和寄存器变化,这样过一遍不就啥都明白了吗。 对VC来说,所谓‘调试时’就是编译连接通过以后,按F10或F11键单步执行一步以后的时候,或者在某行按F9设了断点后按F5执行停在该断点处的时候。 (Turbo C或Borland C用Turbo Debugger调试,Linux或Unix下用GDB调试时,看每句C对应的汇编并单步执行观察相应内存和寄存器变化。)
JiMoKuangXiangQu 2013-11-08
  • 打赏
  • 举报
回复
拷贝构造函数,随手一本c++教材都会讲。 可以翻翻《C++ Primer Plus》
我的送神 2013-11-08
  • 打赏
  • 举报
回复
this指针不用 TDPoint point(*this); 可以直接使用的,这么做肯定不对。
Adol1111 2013-11-08
  • 打赏
  • 举报
回复
如果TDPoint point(*this); 是在类中构造的话,还是拷贝...我以为是main中声明一个,那个肯定没有
Adol1111 2013-11-08
  • 打赏
  • 举报
回复
TDPoint point1(point);这个是拷贝,调用拷贝构造函数没问题 TDPoint point(*this); 这个是啥?没见过...类外能直接用this?
guzhijie1981 2013-11-08
  • 打赏
  • 举报
回复
复制构造函数,哪本书都讲啊
junlinfushi 2013-11-08
  • 打赏
  • 举报
回复
我没记错的话,是有的。
云斜月 2013-11-08
  • 打赏
  • 举报
回复
TDPoint TDPoint::operator++(int) { TDPoint point(*this); //这句话的意思,有这么实例化一个类的吗???? this->x++; this->y++; this->z++; return point;//返回自增前的对象 } 根据*this创建一个局部变量point, TDPoint operator++(TDPoint& point,int) { TDPoint point1(point); //这句话的意思,有这么实例化一个类的吗???? point.x++; point.y++; point.z++; return point1;//返回自增前的对象 } 因为是创建的友元函数,所以不可以直接使用this,所以传递一个引用进来,具体同上
max_min_ 2013-11-07
  • 打赏
  • 举报
回复
没见过?什么书上的啊?是不是c++?

64,683

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧