标题:一个关于构造函数的调用问题
取消只看楼主
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



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-64484-1-1.html




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

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