明示的なキーワード

キーワードは、クラスのコンストラクタで使用することができます。その役割は暗黙の型変換ではありません。

 1 class gxgExplicit  //没有关键字explicit的类
 2 
 3 {
 4 
 5 public:
 6 
 7    int _size;
 8 
 9    gxgExplicit(int size)
10 
11    {
12 
13       _size = size;
14 
15    }
16 
17 };

 

ここで呼び出しがあります

gxgExplicit gE1(24);     //这样是没有问题的

   gxgExplicit gE2 = 1;     //这样也是没有问题的

   gxgExplicit gE3;         //这样是不行的,没有默认构造函数

   gE1 = 2;                 //这样也是没有问题的

   gE2 = 3;                 //这样也是没有问题的

   gE2 = gE1;               //这样也是没有问题的

 

 

gxgExplicitがスタックに改訂された場合は、私たちの_sizeは、スタックのサイズを表す。しかし、2番目の文が目立た通話になり、人々は混乱してしまいます。それは(コンパイラがコンパイルする)正当であるが、これは、コードリーダが理解することを可能にし、許容される形態ではありません。これは、コンパイラのデフォルトは暗黙の型変換関数ケースを持っているので、あなたはGE2 = 1は、最初の文と同じ結果にコンパイルします入力しています。だから、明示的には便利になりました。次のようにコードを変更します。

 1 class gxgExplicit
 2 
 3 {
 4 
 5 public:
 6 
 7    int _size;
 8 
 9    explicit gxgExplicit(int size)
10 
11    {
12 
13       _size = size;
14 
15    }
16 
17 };

 

上記の呼び出しを続けます。

gxgExplicit gE1(24);     //这样是没有问题的

   gxgExplicit gE2 = 1;     //这样是不行的,关键字取消了隐式转换

   gxgExplicit gE3;         //这样是不行的,没有默认构造函数

   gE1 = 2;                 //这样是不行的,关键字取消了隐式转换

   gE2 = 3;                 //这样是不行的,关键字取消了隐式转换

   gE2 = gE1;               //这样是不行的,关键字取消了隐式转换,除非类实现操作符“=”的重载。

 

これは、コンパイラ(VS2005)のショーである:「gxgExplicit」から 'int型から変換することはできません。

ここからは、このキーワードは、コンパイラの暗黙の変換機能がオフに遮蔽することで、アクションが表示されます。

 

つ以上のコンストラクタパラメータの暗黙的な変換が自動的に解除されたときに、以下に説明するMSDNの事実上の点があることに留意されたいです。例えば

 1 class gxgExplicit
 2 
 3 {
 4 
 5 private:
 6 
 7    int _size;
 8 
 9    int _age;
10 
11 public:
12 
13    explicit gxgExplicit(int age, int size)
14 
15    {
16 
17       _age = age;
18 
19       _size = size;
20 
21    }
22 
23 };

 

これは、キーワードの掲載結果は同じではありません。これは、キーワードのと同じです。

しかし、もう一つの例外:入力するためのパラメータの一つだけ、デフォルト値を持つパラメータ残部。

 1 class gxgExplicit
 2 
 3 {
 4 
 5 private:
 6 
 7    int _size;
 8 
 9    int _age;
10 
11 public:
12 
13    explicit gxgExplicit(int age, int size = 0)
14 
15    {
16 
17       _age = age;
18 
19       _size = size;
20 
21    }
22 
23 };

ます。https://my.oschina.net/u/204616/blog/545486で再現

おすすめ

転載: blog.csdn.net/weixin_34217711/article/details/91989283