keisan.cpp
1using namespace std; 2 3int Counter::m_totalCount = 0; 4 5Counter::Counter() :m_count(0) { 6 7} 8void Counter::reset() { 9 m_count = 0; 10} 11void Counter::count() { 12 m_totalCount += m_count; 13 m_count++; 14 15 16 17} 18int Counter::getCount() { 19 return m_count; 20} 21int Counter::getTotalCount() { 22 23 return m_totalCount; 24}
keisan.h
1#pragma once 2#ifndef _KEISAN_H_ 3#define _KEISAN_H_ 4 5#include <iostream> 6 7 8class Counter 9{ 10public: 11 Counter(); 12 void reset(); 13 void count(); 14 int getCount(); 15 static int getTotalCount(); 16 17private: 18 int m_count; 19 static int m_totalCount; 20}; 21 22 23 24 25 26 27#endif // _KEISAN_H_
main.cpp
1#include <iostream> 2using namespace std; 3#include "keisan.h" 4int main() { 5 Counter c1, c2; 6 c1.count(); 7 c2.count(); 8 c2.count(); 9 c2.reset(); 10 c1.count(); 11 c1.count(); 12 c2.count(); 13 cout << "c1のカウント数" << c1.getCount() << endl; 14 cout << "c2のカウント数" << c2.getCount() << endl; 15 cout << "total count" << Counter::getTotalCount() << endl; 16 return 0; 17 18} 19コード
c1のカウント数3 c2のカウント数1 total count4
全体のコードはこのようになります。私が気になったのは結果のtotal countの表し方です。keisan.cppのところで静的メンバ変数である
m_totalcount=0;
として初期化をする。
そして
void Counter::count() { m_totalCount += m_count; m_count++; }
m_countをm_totalcountに代入することでインスタンスの数がわかるというのは理解できます。しかし、最初に私が行った処理は
void Counter::count() { m_totalCount = m_count; m_count++; }
でした。しかしこれではビルドはできたのですが結果が4ではなくなってしまいました。
どうしてm_totalCountは0なのにm_totalCount += m_count;でないと思った結果が出ないのでしょうか。
回答のほどよろしくお願いします。
回答2件
あなたの回答
tips
プレビュー