关于构造函数与析构函数(C++中的类)。
我就是不能明白,在主函数中怎么接收设定的值。比如说我的程序,我就是很混乱不晓得到底怎样构造,怎样在主函数中接收各个构造函数对应的数值。它有很多错误,求帮助,最好可以附带详...
我就是不能明白,在主函数中怎么接收设定的值。比如说我的程序,我就是很混乱不晓得到底怎样构造,怎样在主函数中接收各个构造函数对应的数值。它有很多错误,求帮助,最好可以附带详细的解释!!!谢谢!!!!O(∩_∩)O谢谢~
#include<iostream>
using namespace std;
class Money
{
public:
Money(int newY,int newJ,int newF);
Money();
Money(Money&m);
int getY()
{
return yuan;
}
int getJ()
{
return jiao;
}
int getF()
{
return fen;
}
void setMoney(int newY,int newJ,int newF);
void showMoney();
~Money()
{
cout<<"析构函数被调用"<<endl;
}
private:
int yuan,jiao,fen;
};
/*void Money::setMoney(int newY,int newJ,int newF)
{
yuan=newY;
jiao=newJ;
fen=newF;
}*/
Money::Money(int newY,int newJ,int newF)
{
yuan=newY;
jiao=newJ;
fen=newF;
cout<<"有参构造函数被调用"<<endl;
}
Money::Money()
{
yuan=0;
jiao=0;
fen=0;
}
Money::Money(Money &m)
{
yuan=m.yuan;
jiao=m.jiao;
fen=m.fen;
cout<<"Calling the copy constructor"<<endl;
}
void Money::showMoney()
{
int Y,J,F;
cout<<"Y="<<endl;
cout<<"J="<<endl;
cout<<"F="<<endl;
cin>>Y>>J>>F;
int m,n,t,q;
if(F<10)
{
if(J<10)
cout<<yuan<<"元"<<jiao<<"角"<<fen<<"分"<<endl;
else
{
m=J/10;
n=J%10;
t=Y+m;
cout<<t<<"元"<<n<<"角"<<fen<<"分"<<endl;
}
}
else
{
if(J<9)
{
m=F/10;
n=F%10;
t=J+m;
cout<<yuan<<"元"<<t<<"角"<<n<<"分"<<endl;
}
else
{
m=F/10;
n=F%10;
t=J+m-10;
q=Y+1;
cout<<q<<"元"<<t<<"角"<<n<<"分"<<endl;
}
}
}
int main()
{
int m,n;
int Y,J,F;
cout<<"Y="<<endl;
cout<<"J="<<endl;
cout<<"F="<<endl;
cin>>Y>>J>>F;
Money m1();
Money m2( 0, 0,0 );
Money m3(Money &m);
m1.setMoney();
m1.showMoney();
m2.setMoney(int newY,int newJ,int newF);
m2.showMoney();
m3.setMoney(Money &m);
m3.showMoney();
return 0;
} 展开
#include<iostream>
using namespace std;
class Money
{
public:
Money(int newY,int newJ,int newF);
Money();
Money(Money&m);
int getY()
{
return yuan;
}
int getJ()
{
return jiao;
}
int getF()
{
return fen;
}
void setMoney(int newY,int newJ,int newF);
void showMoney();
~Money()
{
cout<<"析构函数被调用"<<endl;
}
private:
int yuan,jiao,fen;
};
/*void Money::setMoney(int newY,int newJ,int newF)
{
yuan=newY;
jiao=newJ;
fen=newF;
}*/
Money::Money(int newY,int newJ,int newF)
{
yuan=newY;
jiao=newJ;
fen=newF;
cout<<"有参构造函数被调用"<<endl;
}
Money::Money()
{
yuan=0;
jiao=0;
fen=0;
}
Money::Money(Money &m)
{
yuan=m.yuan;
jiao=m.jiao;
fen=m.fen;
cout<<"Calling the copy constructor"<<endl;
}
void Money::showMoney()
{
int Y,J,F;
cout<<"Y="<<endl;
cout<<"J="<<endl;
cout<<"F="<<endl;
cin>>Y>>J>>F;
int m,n,t,q;
if(F<10)
{
if(J<10)
cout<<yuan<<"元"<<jiao<<"角"<<fen<<"分"<<endl;
else
{
m=J/10;
n=J%10;
t=Y+m;
cout<<t<<"元"<<n<<"角"<<fen<<"分"<<endl;
}
}
else
{
if(J<9)
{
m=F/10;
n=F%10;
t=J+m;
cout<<yuan<<"元"<<t<<"角"<<n<<"分"<<endl;
}
else
{
m=F/10;
n=F%10;
t=J+m-10;
q=Y+1;
cout<<q<<"元"<<t<<"角"<<n<<"分"<<endl;
}
}
}
int main()
{
int m,n;
int Y,J,F;
cout<<"Y="<<endl;
cout<<"J="<<endl;
cout<<"F="<<endl;
cin>>Y>>J>>F;
Money m1();
Money m2( 0, 0,0 );
Money m3(Money &m);
m1.setMoney();
m1.showMoney();
m2.setMoney(int newY,int newJ,int newF);
m2.showMoney();
m3.setMoney(Money &m);
m3.showMoney();
return 0;
} 展开
1个回答
展开全部
#include<iostream>
using namespace std;
class Money //定义一个Money类
{
public:
Money(int newY,int newJ,int newF); //带参数的构造函数
Money(); // 构造函数,C++类默认的构造函数
Money(Money&m); //带参数的构造函数
int getY() //成员函数,用于调用
{
return yuan;
}
int getJ() //成员函数,用于调用
{
return jiao;
}
int getF() //成员函数,用于调用
{
return fen;
}
void setMoney(int newY,int newJ,int newF);
//成员函数,成员函数的实现在void Money::setMoney(int newY,int newJ,int newF)
void showMoney();
//成员函数,成员函数的实现在void Money::showMoney()
~Money() // 析构函数
{
cout<<"析构函数被调用"<<endl;
}
private:
int yuan,jiao,fen;
};
/*void Money::setMoney(int newY,int newJ,int newF)
{
yuan=newY;
jiao=newJ;
fen=newF;
}*/
Money::Money(int newY,int newJ,int newF)
{
yuan=newY;
jiao=newJ;
fen=newF;
cout<<"有参构造函数被调用"<<endl;
}
Money::Money()
{
yuan=0;
jiao=0;
fen=0;
}
Money::Money(Money &m)
{
yuan=m.yuan;
jiao=m.jiao;
fen=m.fen;
cout<<"Calling the copy constructor"<<endl;
}
void Money::showMoney()
{
int Y,J,F;
cout<<"Y="<<endl;
cout<<"J="<<endl;
cout<<"F="<<endl;
cin>>Y>>J>>F;
int m,n,t,q;
if(F<10)
{
if(J<10)
cout<<yuan<<"元"<<jiao<<"角"<<fen<<"分"<<endl;
else
{
m=J/10;
n=J%10;
t=Y+m;
cout<<t<<"元"<<n<<"角"<<fen<<"分"<<endl;
}
}
else
{
if(J<9)
{
m=F/10;
n=F%10;
t=J+m;
cout<<yuan<<"元"<<t<<"角"<<n<<"分"<<endl;
}
else
{
m=F/10;
n=F%10;
t=J+m-10;
q=Y+1;
cout<<q<<"元"<<t<<"角"<<n<<"分"<<endl;
}
}
}
int main()
{
int m,n;
int Y,J,F;
cout<<"Y="<<endl;
cout<<"J="<<endl;
cout<<"F="<<endl;
cin>>Y>>J>>F;
Money m1(); //实例类m1,调用的构造函数为Money()
Money m2( 0, 0,0 ); // 实例类m2,调用的构造函数为Money(int newY,int newJ,int newF)
Money m3(Money &m);//实例类m3,调用构造函数Money(Money &m)
m1.setMoney();
m1.showMoney();
m2.setMoney(int newY,int newJ,int newF);
m2.showMoney();
m3.setMoney(Money &m);
m3.showMoney();
return 0;
}
using namespace std;
class Money //定义一个Money类
{
public:
Money(int newY,int newJ,int newF); //带参数的构造函数
Money(); // 构造函数,C++类默认的构造函数
Money(Money&m); //带参数的构造函数
int getY() //成员函数,用于调用
{
return yuan;
}
int getJ() //成员函数,用于调用
{
return jiao;
}
int getF() //成员函数,用于调用
{
return fen;
}
void setMoney(int newY,int newJ,int newF);
//成员函数,成员函数的实现在void Money::setMoney(int newY,int newJ,int newF)
void showMoney();
//成员函数,成员函数的实现在void Money::showMoney()
~Money() // 析构函数
{
cout<<"析构函数被调用"<<endl;
}
private:
int yuan,jiao,fen;
};
/*void Money::setMoney(int newY,int newJ,int newF)
{
yuan=newY;
jiao=newJ;
fen=newF;
}*/
Money::Money(int newY,int newJ,int newF)
{
yuan=newY;
jiao=newJ;
fen=newF;
cout<<"有参构造函数被调用"<<endl;
}
Money::Money()
{
yuan=0;
jiao=0;
fen=0;
}
Money::Money(Money &m)
{
yuan=m.yuan;
jiao=m.jiao;
fen=m.fen;
cout<<"Calling the copy constructor"<<endl;
}
void Money::showMoney()
{
int Y,J,F;
cout<<"Y="<<endl;
cout<<"J="<<endl;
cout<<"F="<<endl;
cin>>Y>>J>>F;
int m,n,t,q;
if(F<10)
{
if(J<10)
cout<<yuan<<"元"<<jiao<<"角"<<fen<<"分"<<endl;
else
{
m=J/10;
n=J%10;
t=Y+m;
cout<<t<<"元"<<n<<"角"<<fen<<"分"<<endl;
}
}
else
{
if(J<9)
{
m=F/10;
n=F%10;
t=J+m;
cout<<yuan<<"元"<<t<<"角"<<n<<"分"<<endl;
}
else
{
m=F/10;
n=F%10;
t=J+m-10;
q=Y+1;
cout<<q<<"元"<<t<<"角"<<n<<"分"<<endl;
}
}
}
int main()
{
int m,n;
int Y,J,F;
cout<<"Y="<<endl;
cout<<"J="<<endl;
cout<<"F="<<endl;
cin>>Y>>J>>F;
Money m1(); //实例类m1,调用的构造函数为Money()
Money m2( 0, 0,0 ); // 实例类m2,调用的构造函数为Money(int newY,int newJ,int newF)
Money m3(Money &m);//实例类m3,调用构造函数Money(Money &m)
m1.setMoney();
m1.showMoney();
m2.setMoney(int newY,int newJ,int newF);
m2.showMoney();
m3.setMoney(Money &m);
m3.showMoney();
return 0;
}
追问
谢谢你的注解,但是我想知道我的程序错在哪里了?应该改哪些地方?谢谢~这个程序的目的就是练习构造函数,拷贝函数,析构函数的应用。
追答
//Money m3(Money &m);//实例类m3,调用构造函数Money(Money &m)
改为
//Money m3(m1或m2);//实例类m3,调用构造函数Money(Money &m)
此处是调用了
同理m3.setMoney(m1,m2);
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
光点科技
2023-08-15 广告
2023-08-15 广告
通常情况下,我们会按照结构模型把系统产生的数据分为三种类型:结构化数据、半结构化数据和非结构化数据。结构化数据,即行数据,是存储在数据库里,可以用二维表结构来逻辑表达实现的数据。最常见的就是数字数据和文本数据,它们可以某种标准格式存在于文件...
点击进入详情页
本回答由光点科技提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询