本文介绍了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 ++盐我有一个关于调用类的构造函数的问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!