本文介绍了c为C ++盐我有一个关于调用类的构造函数的问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

  class 
{
int 子弹;
public
Gun( int num):bullet(num){}
void SD(){cout<< bullet<< ENDL; }
};

class 警察
{
int hand;
枪*手枪;
public
Police( int num, int hand):hand(hand)
{
if (num> 0
手枪= 枪(num);
else
pistol = NULL;
}
void SD()
{
pistol-> SD();
cout<<手<< ENDL;
}
警察( const 警察& 参考):hand( ref .hand)
{
if ref .pistol!= NULL)
手枪= 枪(*( ref .pistol));
}
};





我尝试过:



此代码是我正在学习的书的示例代码的一部分。但是,在Police类的复制构造函数中的动态赋值过程中,在构造函数调用期间插入了对象*(ref.pistol)。这怎么可能?

解决方案

class Gun
{
	int bullet;
public:
	Gun(int num) : bullet(num) {}
	void SD() { cout << bullet << endl; }
};

class Police
{
	int hand;
	Gun* pistol;
public:
	Police(int num, int hand) : hand(hand)
	{
		if (num > 0)
			pistol = new Gun(num);
		else
			pistol = NULL;
	}
	void SD()
	{
		pistol->SD();
		cout << hand << endl;
	}
	Police(const Police& ref) : hand(ref.hand)
	{
		if (ref.pistol != NULL)
			pistol = new Gun(*(ref.pistol));
	}
};



What I have tried:

This code is part of the example code for the book I'm studying. However, in the process of dynamic assignment within the copy constructor of the Police class, the object *(ref.pistol) is inserted during the constructor calling. How is this possible?

解决方案


这篇关于c为C ++盐我有一个关于调用类的构造函数的问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-19 18:06