まず最初に:
$12.3.1/1 - 「関数指定子明示なしで宣言されたコンストラクターは、そのパラメーターの型からそのクラスの型への変換を指定します。そのようなコンストラクターは、変換コンストラクターと呼ばれます。」
あなたの例では、INTは「int」からの変換コンストラクターを持つユーザー定義クラスです。
したがって、次のコードは整形式です。
INT i(1024); // direct initialization syntax
これは、整数から INT オブジェクトを取得できることを意味します。しかし、INT オブジェクトを整数に戻す必要がある場合はどうすればよいでしょうか? 推移性?
クラス INT は、カプセル化された整数メンバーを返すメンバー関数を提供できると言えます。
int x = i.geta();
ただし、これはあまり直感的ではなく、標準化されたアプローチではありません。また、そのような状況で組み込み型がどのように機能するかについては、直感的ではありません。
int z = 0;
int y1 = z; // copy initialization or
int y2(z); // direct initialization
double d = (int )z; // explicit cast
したがって、標準では、次のように言って、ユーザー定義型を変換する標準化と直感性を考慮しています。
$12.3/2 - 「フォームの名前を持つパラメーターを持たないクラス X のメンバー関数 [...]
演算子変換タイプ ID
[...] X から conversion-type-id で指定された型への変換を指定します。このような関数は、変換関数と呼ばれます。戻り値の型は指定できません。変換関数がメンバー関数である場合、変換関数の型 (8.3.5) は「変換型 ID を返すパラメーターを取らない関数」です。
これにより、次のすべてが整形式になり、組み込み型の動作との調和が保たれます。
int y1 = i; // copy initialization or
int y2(i); // direct initialization
double d = (int )i; // explicit cast