回答編集履歴

2

ソースの誤字修正、変数名修正

2019/01/30 01:00

投稿

izmktr
izmktr

スコア2856

test CHANGED
@@ -34,21 +34,23 @@
34
34
 
35
35
  class A{
36
36
 
37
- bool derived;
37
+ bool base;
38
38
 
39
39
 
40
40
 
41
- A(bool _delived = false):derived(_delived){
41
+ A(bool _base = true):base(_base){
42
42
 
43
- if(!derived){
43
+ if(base){
44
44
 
45
- ...
45
+ ...
46
+
47
+ }
46
48
 
47
49
  }
48
50
 
49
- A:~A(){
51
+ ~A(){
50
52
 
51
- if(!derived){
53
+ if(base){
52
54
 
53
55
  ...
54
56
 
@@ -62,7 +64,7 @@
62
64
 
63
65
  class B{
64
66
 
65
- B:A(true){
67
+ B:A(false){
66
68
 
67
69
  }
68
70
 

1

質問の件を追記

2019/01/30 01:00

投稿

izmktr
izmktr

スコア2856

test CHANGED
@@ -24,6 +24,50 @@
24
24
 
25
25
 
26
26
 
27
- Bに派生しているとき、Aのコンストラクタを呼び出さず…ということは出来ませんので上書きで対応するしかないでしょう
27
+ 追記
28
28
 
29
+
30
+
29
- ストラクタならばAに派生フラグをつけて、Bで上書きすることで、Aのデストラクタの処理をスキップ処理を書くことは出来ます
31
+ 一応、こういう処理でAのコンストラクタ、デストラクタをスキップさせることはできます
32
+
33
+ ```
34
+
35
+ class A{
36
+
37
+ bool derived;
38
+
39
+
40
+
41
+ A(bool _delived = false):derived(_delived){
42
+
43
+ if(!derived){
44
+
45
+ ...
46
+
47
+ }
48
+
49
+ A:~A(){
50
+
51
+ if(!derived){
52
+
53
+ ...
54
+
55
+ }
56
+
57
+ }
58
+
59
+ }
60
+
61
+
62
+
63
+ class B{
64
+
65
+ B:A(true){
66
+
67
+ }
68
+
69
+ }
70
+
71
+
72
+
73
+ ```