Я пытаюсь понять, что делает программа, которую я использую. Ниже я включил соответствующие фрагменты кода.
Создается указатель класса StAnaPars
:
StAnaPars* anapars12 = new StAnaPars;
Программа обращается к нескольким членам anapars12
для установки различных параметров анализа.
Затем создается другой указатель класса StAnaPars
следующим образом:
StAnaPars *anapars12_toward = new StAnaPars(*anapars12);
Определение конструктора для класса StAnaPars
это:
23 class StAnaPars : public TObject {
24 public:
25 StAnaPars()
26 : mCorrectTowerEnergyForTracks(new StjTowerEnergyCorrectionForTracksNull)
27 , useTpc(false)
28 , useBemc(false)
29 , useEemc(false)
30 , useFms(false)
31 , useMonteCarlo(false)
32 , randomSelectorProb(1.0)
33 , randomSelectorAt(false)
34 , randomSelectorSeed(0)
35 , changeTracks(0)
36 , changeTowers(0)
37 {
38 }
Мой вопрос: когда создается второй StAnaPars
указатель, anapars12_toward
, мы устанавливаем его равным new StAnaPars(*anapars12)
, но конструктор StAnaPars
этого не делает. t принять любой параметр. Итак, это в основном делает копию anapars12
, а теперь anapars12_toward = anapars12
? Значит, оба указателя имеют одинаковую информацию? Но как это сделать, если конструктор StAnaPars
не принимает никаких параметров?
Большое спасибо за помощь!