C++中构造函数

C++中构造函数
#include

using namespace std;

class Cube
{
public:

//构造函数的作用,初始化对象的数据 
//构造函数名用的是类的名字而不是对象名,无返回值类型。


//无参构造函数
//如果创建一个类没有写任何构造函数,系统会自动生成默认的无参构造函数
//函数为空,什么都不做 ,如果创建的对象是全局对象或者是静态对象
//则会被默认初始化为0,否则值是随机的,和C语言保持着一致

//也可以自己写一个无参构造函数,将数据初始化为0;

Cube()
{
	m_A = 0;
	m_B = 0;
	m_C = 0;
	cout << "无参构造函数" << endl; 
 } 

//一般构造函数
//可以函数重载,可传一个参数也可传两个参数,也可类型不同 
//只要存在有参构造函数,系统则不会再自动调用无参构造函数
 
Cube(double a, double b)
{
	m_A = a;
	m_B = b;
	cout << "调用有参构造函数1" << endl; 
}
Cube(double a, double b, double c)
{
	m_A = a;
	m_B = b;
	m_C = c;
	cout << "调用有参构造函数2" << endl; 
}
 
//拷贝构造函数 
//拷贝构造函数一般形如 类名(const 类名 &another) 
//拷贝构造函数参数为类对象本身的引用,用于根据一个已存在的对象
//复制出一个新的该对象,将已存在对象数据成员的值赋给新创建对象中的
//数据成员 

//调用方式有两种 Cube c2(c1);  Cube c2 = c1; 

//如果不提供拷贝构造函数,系统会提供一个默认拷贝构造函数 
//但提供的是浅拷贝
Cube(const Cube &another)	
{
	m_A = another.m_A;
	m_B = another.m_B;
	m_C = another.m_C; 
} 

void setABC(double a, double b, double c)
{
	m_A = a;
	m_B = b;
	m_C = c;
}
double getA()
{
	return m_A;
}
double getB()
{
	return m_B;
}
double getC()
{
	return m_C;
}
double getVolume()
{
	Volume = m_A * m_B * m_C;
	return Volume;
}
double getArea()
{
	Area = 2 * ((m_A * m_B) + (m_A * m_C) + (m_B * m_C));
	return Area;
}
bool judge(Cube &another_c)
{
	if(m_A == another_c.getA() &&
	   m_B == another_c.getB()  &&
	   m_C == another_c.getC())
	   {
		   return true;
	   }
	   else
	   {
		   return false;
	   }
}
	
private:
double m_A;
double m_B;
double m_C;
double Area;
double Volume;

};

bool judge(Cube &c1, Cube &c2)
{
	if(c1.getA() == c2.getA() &&
	   c1.getB() == c2.getB() &&
	   c1.getC() == c2.getC())
	
	{
		return true;
	}
	else
	{
		return false;
	}
	
	
	
}

int main()
{
Cube();
Cube c1(10, 20); //调用有参构造函数 Cube(double a, double b)
c1.setABC(12.3, 15.2, 13.0);

cout <<	"c1面积是:" << c1.getArea() << endl;
cout << "c1体积是:" << c1.getVolume() << endl;

Cube c2(9.6, 9.8, 3.3);		//调用有参构造函数Cube(double a, double b, double c) 
c2.setABC(10, 20, 30);
cout <<	"c2面积是:" << c2.getArea() << endl;
cout << "c2体积是:" << c2.getVolume() << endl;

if(judge(c1, c2) == true)
{
	cout << "相同" << endl;
}
else
{
	cout << "不相同" << endl;
}

if(c1.judge(c2) == true)
{
	cout << "相同" << endl ;
}
else 
{
	cout << "不相同" << endl;
}


return 0;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值