Class C++ Dasar, edisi 3

Class C++ Dasar, edisi 3



edisi 3


Explicit

C++ meyediakan satu sarana, menggunakan keyword explicit untuk mengubah perilaku constructor dengan satu argumen agar tidak berfungsi sebagai conversion operator. Jika class B menyatakan explicit pada copy constructor sebagai berikut :


    class B
   {
      public:
      explicit B(const A& a); // explicit ctor
   };


Maka konversi A ke B secara implisit tidak dapat dilakukan. Konversasi A ke B dapat dilakukan secara eksplisit menggunakan typecast :

   A a;
   B b=static_cast<B>(a); atau
   B b=(B)a;

Konversi secara implisit dapat terjadi melalui argumen fungsi f dengan tipe B :

        void f(const B& );

Tetapi f diakses dengan variabel tipe A, f(a). Apabila class B menghalangi konversi secara implisit maka argumen fungsi f menjadi :

    f((B)a); atau
   f(static_cast<B>(a));

Konversi tipe obyek secara implisit sebaiknya dihindari karena efeknya mungkin lebih besar terhadap aplikasi program secara keseluruhan dan tidak dapat dicegah pada saat kompilasi, karena construcor dengan argumen tunggal adalah suatu pernyataan program yang sah dan memang dibutuhkan.


sumber : IlmuKomputer.com

Class C++ Dasar, edisi 3 Class C++ Dasar, edisi 3 Reviewed by Ardy S on February 11, 2013 Rating: 5

No comments:

Powered by Blogger.