あなたの質問には特定のあいまいさがあります。ご覧のとおり、コンストラクターに関してコンパイラーが実行する暗黙のアクションには、コンストラクターの宣言と定義の両方が含まれます。あるコンストラクターが宣言されているが定義されていない場合、それが存在すると思いますか?
とにかく、コンストラクターが宣言されていないクラスを作成する方法はありません。たとえば、コピーコンストラクタは常に宣言されます。それを抑制する方法はありません。自分で宣言しない場合は、コンパイラが宣言します。
デフォルトのコンストラクターに関しては、暗黙の宣言を抑制することができます。コンストラクターを自分で(つまり明示的に)宣言した場合、コンパイラーはデフォルトのコンストラクターを暗黙的に宣言しません。ただし、この場合、もちろん、クラスにはコンストラクターがあります。これは、自分で宣言したコンストラクターです。(さらに、上で述べたように、コピーコンストラクターは常に宣言されます)。
暗黙的に定義されたコンストラクターについては...それらを使用する場合にのみ、コンパイラーによって定義されます。そしてもちろん、それらは可能な場合にのみ定義されます。(暗黙のコンストラクターを使用していて、定義が不可能であることが判明した場合、プログラムは単純にコンパイルされません)。
したがって、ここでも、宣言されたコンストラクターに関しては、コンストラクターがまったくないクラスを持つことはできません。すべてのクラスには、少なくとも1つのコンストラクターが宣言されています。
特にコンストラクターの定義に関心がある場合は、コンストラクターが定義されていないクラスを持つことは確かに可能です。これがあなたのための例です
struct S {
S(const S&);
};
それでおしまい。クラスには1つのコンストラクターが宣言されていますが、定義されていません:)