忍者ブログ

神戸電子専門学校ゲームソフト学科の生徒が運営するGESのブログです。

   

[PR]

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

C++小ネタ話 --- explicit ---

お金が欲しいと思う今日この頃皆さんいかがお過ごしでしょうか。
肩の荷が少し下りた人です。
 
明日使える・・・かは解らないC++の小ネタを紹介しようと思います。
知識として頭の片隅にでも置いといてもらえればと思います。
 
今回はexplicitについてやろうと思います。
簡単に言うとクラスへの暗黙的型変換を防ぐ事ができます。
 
実際に使うか?と言われると怪しいですが
「それでも私は一向に構わん!」
という方はどうぞ

拍手[0回]


 
[Main.cpp]
#include <stdio.h>
 
class C0 {
public:
    C0( int _n ){ m_n = _n; }
    void Show(){ printf( "%d\n", m_n ); }
private:
    int m_n;
};
 
void Test( C0 _c0 ){ _c0.Show(); }
 
int main(){
    Test( 10 );
    return 0;
}
[EOF]
 
上のコードは実行可能です。
注目するのはmainで読んでいるTest関数です。
C0型を引数に取るのに実際に書かれているのは数値(int)ですので
C0型に暗黙の型変換が行われていることになります。
 
ここで引数を絶対に明示的に書いて欲しい時にexplicitを使用します。
使用方法はコンストラクタの前にexplicitを書くだけです。
 
explicit C0( int _n ){ ~~~ }
 
これでコンパイルするとエラーが返ってくる様になります。
これを実行できるようにするにはTest関数を呼んでいる所で
 
Test( C0( 10 ) );
 
のようにすると実行できるようになります。
 
 
 
explicitについては以上です。有り難う御座いました。
PR

COMMENT

NAME
TITLE
MAIL(非公開)
URL
EMOJI
Vodafone絵文字 i-mode絵文字 Ezweb絵文字
COMMENT
PASS(コメント編集に必須です)
SECRET
管理人のみ閲覧できます

ブログ内検索

最新コメント

[01/29 人面犬]
[10/01 8ch]
[09/12 uncle]
[09/10 某卒業生]
[06/07 uncle]

カレンダー

12 2020/01 02
S M T W T F S
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31

テスト

Copyright ©  -- GESブログ --  All Rights Reserved
Design by CriCri / Photo by Geralt / powered by NINJA TOOLS / 忍者ブログ / [PR]