explicitの明示的コンストラクタなの使い方なのですが、引数が一個の時だけ使えて
暗黙的型変換を防止できできてmain.cppのmain関数で test x = 5;という書き方がエラーになって。text x(4);はできる。。explicitを書かないとtest x = 5;のやり方が出来てtest x(4);もできるということはわかるのですが、暗黙的型変換の防止とこれをする使いみちを教えてほしいです。

            class test {
        private:
            int x;
            int y;

        public:

            int pri_x()const {
                return x;
            }

            int pri_y()const{
                return y;
            }

            explicit test(int a):x(a){ }
             //test(int a):x(a){ }

        };