| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 756 人关注过本帖
标题:一个关于构造函数的调用问题
取消只看楼主 加入收藏
yanglinayp
Rank: 1
等 级:新手上路
帖 子:44
专家分:0
注 册:2006-3-21
收藏
 问题点数:0 回复次数:4 
一个关于构造函数的调用问题

下面的程序我真是搞不清楚了。在创建对象ob1(1,2,3)时,它是怎么调用下面这三条语句的呢?

three_d(){x=y=z=0;}
three_d(int i,int j,int k) {x=i;y=j;z=k;}
three_d operator(){(int a,int b,int c);

创建ob2时又是怎么调用的呢?构造函数调用的是有参的还是无参的呢?同时它又是怎么调用operator()的???我就是弄不清楚,还望大家多多指教,谢谢!!!

#include <iostream>
using namespace std;
class three_d{
int x,y,z;
public:
three_d(){x=y=z=0;} // ????
three_d(int i,int j,int k) {x=i;y=j;z=k;}//?????
three_d operator(){(int a,int b,int c);
void show();};
three_d three_d::operator()(int a,int b,int c)
{
three_d temp;
temp.x=x+a;
temp.y=y+b;
temp.z=z+c;
return temp;

}
void three_d::show()
{
cout<<x<<" ,";
cout<<y<<" ,";
cout<<z<<" \n";
}
int main()
{
three_d ob1(1,2,3),ob2;//创建对象ob2时有没有调用three_d(){x=y=z=0;} ??
ob2=ob1(10,11,12);
cout<<"ob1:";
ob1.show();
cout<<"ob2:";
cout<<ob2.show();
return 0;
}
}

结果:ob1:1,2,3
ob2:11,13,15

搜索更多相关主题的帖子: 构造函数 int three operator using 
2006-05-15 21:04
yanglinayp
Rank: 1
等 级:新手上路
帖 子:44
专家分:0
注 册:2006-3-21
收藏
得分:0 
在创建对象ob1(1,2,3)时,它是怎么调用下面这三条语句的呢?
----------
是调用three_d(int i,int j,int k) {x=i;y=j;z=k;}
创建ob2时又是怎么调用的呢?构造函数调用的是有参的还是无参的呢?


创建对象ob1(1,2,3)时,它是为什么只调用three_d(int i,int j,int k) {x=i;y=j;z=k;} ,而没有调用operator()?
还有什么叫系统自动生成的拷贝函数啊,它起什么作用呢?

我是小小登山者!
2006-05-15 21:41
yanglinayp
Rank: 1
等 级:新手上路
帖 子:44
专家分:0
注 册:2006-3-21
收藏
得分:0 
是不是在创建对象时,只能自动的去调用构造函数啊,运算的时候才能调用运算符重载啊!!

我是小小登山者!
2006-05-15 21:44
yanglinayp
Rank: 1
等 级:新手上路
帖 子:44
专家分:0
注 册:2006-3-21
收藏
得分:0 
哦,我明白了,真的是非常感谢你!多日来我解不开的地方都被你点化开了,你真的是很了不起!!谢谢

我是小小登山者!
2006-05-15 21:59
yanglinayp
Rank: 1
等 级:新手上路
帖 子:44
专家分:0
注 册:2006-3-21
收藏
得分:0 
谢谢

我是小小登山者!
2006-05-16 20:53
快速回复:一个关于构造函数的调用问题
数据加载中...
 
   



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

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