C++でのexplicitの使い方はどうですか。

C++で、キーワードexplicitは、単一引数のコンストラクタに修飾され、暗黙の型変換を防止するために使用されます。単一引数のコンストラクタにexplicitキーワードが使用されると、そのコンストラクタは明示的にのみ呼び出すことができ、暗黙の型変換で呼び出すことはできません。

explicitキーワードを使用した例は次のとおりです:

class MyInt {
public:
    explicit MyInt(int num) : value(num) {}

    int getValue() const {
        return value;
    }

private:
    int value;
};

void printInt(const MyInt& num) {
    std::cout << num.getValue() << std::endl;
}

int main() {
    MyInt myNum(5); // 直接调用构造函数
    printInt(myNum); // 隐式转换为MyInt对象,通过显式调用的方式传递给printInt函数
    // printInt(5); // 错误,不能隐式转换为MyInt对象
    printInt(MyInt(10)); // 可以显式地调用构造函数
    return 0;
}

上記の例では、MyIntクラスにはexplicitキーワードを持つ単一パラメーターのコンストラクターがあります。つまり、整数を暗黙的にMyIntオブジェクトに変換することはできません。MyIntオブジェクトを作成するには、コンストラクターを明示的に呼び出す必要があります。main関数では、暗黙の変換でprintInt関数を呼び出すのは間違っており、コンストラクターを明示的に呼び出してMyIntオブジェクトをprintInt関数に渡すことができます。

bannerAds