一个有关C++基础语法的问题

cayaa4 2010-08-10 05:44:52
#include<iostream>
using namespace std;
class Point
{
public:
Point(int xx=0,int yy=0) {X=xx;Y=yy;}
Point(Point &p);
int GetX() {return X;}
int GetY() {return Y;}
private:
int X,Y;
};
Point::Point(Point &p)
{
X=p.X;
Y=p.Y;
cout<<"拷贝构造函数调用"<<endl;
}
void fun1(Point p)
{
cout<<p.GetX()<<endl;
}
Point fun2()
{
Point A(1,2);
return A;
}
int main()
{
Point A(4,5);
Point B(A);//拷贝构造函数调用
cout<<B.GetX()<<endl;//4
cout<<B.GetX<<endl;//这一句和上面那句有什么区别?输出结果1,B.GetX是函数指针?
fun1(B);//这里为什么也会调用拷贝构造函数?
B=fun2();
cout<<B.GetX()<<endl;//1
getchar();
return 0;
}
...全文
164 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhangzhongke007 2010-08-10
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 cattycat 的回复:]
fun1(B)这个参数传递过程中进行了拷贝。也就是用实参构造形参,是拷贝调用。
B.GetX输出的是函数在类的成员函数中的偏移。但vs08编译报错。不能这么用。
[/Quote]
学习了。
  • 打赏
  • 举报
回复
fun1(B);//这里为什么也会调用拷贝构造函数?
你这里的参数不是引用,所以在传递之前会复制。。调用复制构造函数
sbqjhipr 2010-08-10
  • 打赏
  • 举报
回复
因为你不是指针也不是引用,是值传所以会调用
jackyjkchen 2010-08-10
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 cayaa4 的回复:]
引用 4 楼 zhengweihit 的回复:
请教
cout<<B.GetX<<endl;//这一句和上面那句有什么区别?输出结果1,B.GetX是函数指针?
这句什么编译器能过之?

vc++6.0就可以
[/Quote]
VC6极度不靠谱
cattycat 2010-08-10
  • 打赏
  • 举报
回复
fun1(B)这个参数传递过程中进行了拷贝。也就是用实参构造形参,是拷贝调用。
B.GetX输出的是函数在类的成员函数中的偏移。但vs08编译报错。不能这么用。
baihacker 2010-08-10
  • 打赏
  • 举报
回复
1.E1.E2 E2是非static function的话后面应该马上进行调用。
2.VC6处理为了Point::GetX,同时转换为对应的指针。
3.指向成员的指针转为了bool型。
cout<<boolalpha <<&Point::GetX<<endl;
liutengfeigo 2010-08-10
  • 打赏
  • 举报
回复

珍惜生命
远离VC6
cayaa4 2010-08-10
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 zhengweihit 的回复:]
请教
cout<<B.GetX<<endl;//这一句和上面那句有什么区别?输出结果1,B.GetX是函数指针?
这句什么编译器能过之?
[/Quote]
vc++6.0就可以
zhengweihit 2010-08-10
  • 打赏
  • 举报
回复
请教
cout<<B.GetX<<endl;//这一句和上面那句有什么区别?输出结果1,B.GetX是函数指针?
这句什么编译器能过之?
liutengfeigo 2010-08-10
  • 打赏
  • 举报
回复
cout<<B.GetX<<endl;//这一句和上面那句有什么区别?输出结果1,B.GetX是函数指针?
这个真的没试过。。也不知道为什么是1
baihacker 2010-08-10
  • 打赏
  • 举报
回复
fun1(B);//这里为什么也会调用拷贝构造函数?

用实参B构造形参p
liutengfeigo 2010-08-10
  • 打赏
  • 举报
回复
fun1(B);//这里为什么也会调用拷贝构造函数?
按值传递会调用拷贝构造函数

65,206

社区成员

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

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