#include <iostream>
using namespace std;
class programming {
protected: int variable;
public:
programming() {
cout << "In constructor\n";
input_value();
}
~programming() {
cout << "In destructor\n";
output_value();
}
void input_value() {
cout << "In function input_value\n";
variable = 100;
}
void output_value() {
cout<< "Variable is "<< variable << "\n";
}
void onemorefunction() {
if(variable%2) {
cout << "Variable is odd\n";
}
else cout << "Variable is even\n";
}
};
int main(int argc, char *argv[]) {
programming object;
object.onemorefunction();
return 0;
}
上記プログラムは、それが出力動作します:私のC++プログラムがこれを出力するのはなぜですか?
In constructor In function input_value Variable is even In destructor Variable is 100
私はC++に新しいですし、私はそれがすべてのこれらの行を出力理由として困難を抱えています。私はonemorefunction関数だけが呼ばれているので、何も印刷しないと思うでしょう。どんな助けもありがとうございます。ありがとう!オブジェクトのライフサイクルが終了したときにデストラクタが最後に呼び出されているので、それがなければならないようにプログラムの出力である
デストラクタは、オブジェクトのライフタイムが終了すると常に呼び出されます。この場合、 'オブジェクト'の寿命は、プログラム終了時に終了します。 – UnholySheep
*出力の何が分かりにくいですか?あなたはオブジェクトのライフサイクルと、それらがどのように構築され、破壊されたかを知っていますか? –
このような問題を解決する適切なツールは、デバッガです。スタックオーバーフローを尋ねる前に、コードを一行ずつ進める必要があります。詳しいヘルプは、[小さなプログラムをデバッグする方法(Eric Lippert)](https://ericlippert.com/2014/03/05/how-to-debug-small-programs/)を参照してください。少なくとも、問題を再現する[最小、完全、および検証可能](http://stackoverflow.com/help/mcve)の例と、デバッガでの観察結果を含めるように質問を編集する必要があります。 –