[ad_1]
やあ、
質問のためにクラスを単純化しました。
次のことを説明してくれる人が必要です。
コンパイラが見たとき
Mystring x{"ABC"};
クラスコンストラクターを直接トリガーしますが、等号の後にコンパイラーがクラスコンストラクターもトリガーする方法
Mystring test="Hi there";
#include<iostream> #include<cstring> class Mystring { private: char * str; public: Mystring(char * s) :str{nullptr} { str = new char[std::strlen(s)+1]; std::strcpy(str,s); std::cout<<"constructor is called for: "<<this->str<<std::endl; } }; int main() { Mystring x{"ABC"}; Mystring y="Hi there"; return 0; }
私が試したこと:
問題なく動作しますが、「こんにちは」の初期化値の前に Mystring クラス名がない場合に、コンパイラがクラス コンストラクターをトリガーする方法を知る必要があります。
たとえば、次のページを参照してください。 コンストラクターによる明示的な初期化 (C++ のみ) – IBM Documentation[^]
[ad_2]
Source link
コメント