error C2248 に関してその2
昨日の続き。
下記のテストクラス
class CTestClass { public: CTestClass() { ::AfxMessageBox(_T("コンストラクタ")); } CTestClass(const CTestClass& obj) { ::AfxMessageBox(_T("コピーコンストラクタ")); } CTestClass& operator=(const CTestClass& obj) { ::AfxMessageBox(_T("代入")); return *this; } };
を作成し、
std::vectora(10);
のように呼び出してみた。
結果はコンストラクタが最初に呼び出され、コピーコンストラクタが10回呼び出された。
イメージ的にはコンストラクタが10回呼び出されそうだが。
vectorクラス内からどのように呼び出されるか調査したいが
時間がかかりそうなのでとりあえずここで止め。
一応言っておくとCFileでエラーが出るのはCObjectでコピーが
禁止(コピーコンストラクタがprivate)されているため。