新しいクラスを構築する必要があることをコンパイラが認識する方法

プログラミングQA


やあ、
質問のためにクラスを単純化しました。

次のことを説明してくれる人が必要です。
コンパイラが見たとき

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[^]



Source link

コメント

タイトルとURLをコピーしました