【发布时间】:2020-08-05 19:40:34
【问题描述】:
我试图了解我正在使用的程序在做什么。下面,我包含了相关的代码。
类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的构造函数不接受任何参数。那么,这基本上是在复制anapars12 和现在的anapars12_toward = anapars12 吗?那么,两个指针具有相同的信息吗?但是当StAnaPars构造函数不接受任何参数时,我们怎么能做到这一点呢?
非常感谢您的帮助!
【问题讨论】:
-
复制构造函数
标签: c++ class pointers constructor