构造函数的问题,搞的我不知所措,如何用一个自定义的构造函数給对象赋值?为什么我总是得不到想要的结果??

林昭希 2012-03-20 08:48:02
为何不能输出我想要的东西,这里到底是哪里出错了啊?


// #include <iostream>
// using namespace std;
// class Tri //自定义的类名Tri
// { double a,b,c ;
// public:
// Tri(double x , double y , double z )
// { a=x; b=y; c=z;
// cout<<"调用构造函数,周长为: "<<a+b+c<<endl;
// }
// ~Tri()//析构函数
// { cout<<"析构周长为: "<<a+b+c<<" 的三角形对象"<<endl; }
// };
// void main( )
// { Tri tria(3,4,5); //建立对象tria
// Tri(5,5,5); //调用构造函数建立临时对象,随后撤消临时对象
// cout<<"main()函数结束"<<endl;
// }

//---------------------------------------------//
#include <iostream>
using namespace std;
class Helloworld
{
protected:

int a,b,c;

public:
void show()
{
cout<<"hello world!"<<endl;
cout<<endl<<a<<endl<<b<<endl<<c<<endl;
}
// Helloworld()
// {
// a=10,b=20,c=30;
// cout<<endl<<a<<endl<<b<<endl<<c<<endl;
// }
Helloworld(int q,int w,int e)
{
q=a;
w=b;
e=c;
cout<<endl<<a<<endl<<b<<endl<<c<<endl;
}
~Helloworld()
{
cout<<"撤销!"<<endl;
}
};
void main()
{
// Helloworld a;
Helloworld b(22,33,44);
// a.show();
b.show();

}


在这一行中,我明明的赋值是所示Helloworld b(22,33,44);
但是每次都出现的不是22,33,44这些我输入的数字,而是若图所示的怪数字,这到底问题在哪儿啊??
...全文
110 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
Helloworld(int q,int w,int e)
{
q=a;
w=b;
e=c;
cout<<endl<<a<<endl<<b<<endl<<c<<endl;
}

楼主真是大公无私啊,本来类Helloworld中的数据成员变量就没赋有意义的初始值,而函数参数q、w、e有初始值了,你却用没意义的初始值的变量给有意义初始值的函数参数赋值。

当你定义了类Helloworld的对象 b时,系统为b中的数据成员b.a,b.b,b.c分配了内存空间,但在这个内存空间中的值是不确定的,也没有意义的
pengzhixi 2012-03-20
  • 打赏
  • 举报
回复
可以结贴了
蓝枫10 2012-03-20
  • 打赏
  • 举报
回复
//赋值反了
Helloworld(int q,int w,int e)
{
q=a;
w=b;
e=c;

64,651

社区成员

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

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