Contoh C++ Union

Contoh C Union



Kesatuan ialah jenis kelas khas dalam C++ yang membolehkan penyimpanan jenis data yang berbeza dalam lokasi memori yang dikongsi. Tidak seperti struktur, di mana setiap bahagian biasanya mendapat ingatannya, kesatuan membenarkan kepingan data yang berbeza menggunakan lokasi memori yang sama. Ciri ini menjadikan kesatuan amat berguna apabila kecekapan memori menjadi keutamaan, dan hanya satu daripada ahli perlu diakses pada satu masa. Dalam artikel ini, kita akan menyelidiki konsep kesatuan dalam C++ dan meneroka berbilang contoh yang menunjukkan kegunaannya dalam pelbagai senario.

Sintaks:

Kesatuan ialah jenis yang ditakrifkan oleh pengguna, membolehkan penyimpanan jenis data yang pelbagai dalam lokasi memori yang dikongsi. Menggunakan kesatuan mengikut sintaks yang sama dengan struct.







Sintaks asas adalah seperti berikut:



kesatuan UnionName {

// Pengisytiharan ahli

Ahli DataType11 ;

Ahli DataType22 ;

//...

} ;

Di sini, 'NamaKesatuan' berfungsi sebagai pengecam untuk kesatuan yang memberikan nama unik untuk merujuk jenis yang ditentukan pengguna khusus ini. Jenis data ahli kesatuan ditandakan sebagai 'DataType1', 'DataType2', dan sebagainya. Jenis data ini menandakan pelbagai jenis maklumat yang boleh disimpan dalam kesatuan. Setiap ahli dalam kesatuan, yang ditetapkan dengan nama seperti 'ahli1', 'ahli2', dll., mewakili sekeping data yang berbeza.



Kami kini memahami sintaks asas. Sekarang mari kita gunakan beberapa contoh untuk memahami perkara ini dengan lebih baik.





Contoh 1: Penggunaan Kesatuan Asas

Contoh pertama menggambarkan penggunaan asas kesatuan dalam C++, mempamerkan cara mereka membolehkan perkongsian ruang memori antara jenis data yang berbeza dalam satu struktur.

Berikut adalah contoh:



#include

menggunakan ruang nama std ;

kesatuan ArrayUnion {

int intArray [ 5 ] ;

terapung floatArray [ 5 ] ;

} ;

int utama ( ) {

ArrayUnion arrayUnion ;

untuk ( int i = 0 ; i < 5 ; ++ i ) {

arrayUnion. intArray [ i ] = i * 2 ;

}

cout << 'Int Array:' ;

untuk ( int i = 0 ; i < 5 ; ++ i ) {

cout << ' ' << arrayUnion. intArray [ i ] ;

}

cout << endl ;

untuk ( int i = 0 ; i < 5 ; ++ i ) {

arrayUnion. floatArray [ i ] = i * 1.5f ;

}

cout << 'Susun Apungan:' ;

untuk ( int i = 0 ; i < 5 ; ++ i ) {

cout << ' ' << arrayUnion. floatArray [ i ] ;

}

cout << endl ;

kembali 0 ;

}

Dalam coretan kod C++ ini, kami menggunakan kesatuan bernama 'MyUnion' yang menggabungkan tiga ahli data berbeza: integer (intValue), nombor titik terapung (floatValue) dan aksara (charValue). Hanya seorang daripada ahli ini mungkin aktif pada mana-mana titik kerana keupayaan kesatuan untuk berkongsi ruang ingatan.

Dalam fungsi 'utama', kami mengisytiharkan contoh kesatuan iaitu 'myUnion'. Mula-mula, kami menetapkan nilai ahli integer kepada 42 dan menggunakan 'cout' untuk mencetaknya. Selepas itu, kami menetapkan nilai mata terapung 3.14 kepada ahli 'Nilai Terapung' dan mencetaknya. Akhir sekali, kami menetapkan aksara 'A' kepada ahli 'charValue' dan mencetaknya. Adalah penting untuk diingat bahawa oleh kerana semua ahli kesatuan berkongsi lokasi memori yang sama, mengubah satu ahli mungkin mempunyai kesan ke atas nilai ahli lain. Kod ini diakhiri dengan mengembalikan 0 yang menandakan pelaksanaan yang berjaya.

Contoh 2: Kesatuan dengan Struktur

Struct ialah sejenis data dalam C++ yang pengguna boleh cipta untuk menggabungkan pembolehubah pelbagai jenis di bawah satu nama bersatu. Menggabungkan kesatuan dengan struct boleh berguna apabila kita ingin mencipta struktur data yang boleh menyimpan jenis data yang berbeza, dan setiap jenis dikaitkan dengan medan tertentu. Gandingan ini membolehkan pembangunan struktur data kompleks yang menampilkan perwakilan yang pelbagai.

Berikut ialah contoh menggunakan kesatuan dalam struct dalam C++:

#include

menggunakan ruang nama std ;

struct titik {

int s1 ;

int s2 ;

} ;

kesatuan bentuk {

int sisi ;

terapung jejari ;

Pusat titik ;

} ;

int utama ( ) {

Bentuk bentuk ;

bentuk. sisi = 5 ;
cout << 'Sisi:' << bentuk. sisi << endl ;

bentuk. jejari = 6.0f ;
cout << 'Jejari:' << bentuk. jejari << endl ;

bentuk. pusat = { 10 , dua puluh } ;
cout << 'Pusat: (' << bentuk. pusat . s1 << ',' << bentuk. pusat . s2 << ')' << endl ;

kembali 0 ;

}

Dalam kod ini, kami mentakrifkan atur cara C++ yang menggunakan kesatuan dan struct untuk mewakili pelbagai aspek bentuk geometri. Mula-mula, kami mengisytiharkan struktur 'Titik' yang terdiri daripada dua ahli integer, 's1' dan 's2', yang mewakili koordinat titik dalam ruang 2D. Kemudian, kami mentakrifkan 'kesatuan' bernama 'Bentuk' yang terdiri daripada tiga ahli: integer 'sisi', titik terapung 'jejari' dan struct 'Titik' bernama 'pusat'. Beralih ke fungsi 'utama', kami membuat instantiat objek 'Bentuk' bernama 'bentuk'. Kami kemudian menunjukkan kepelbagaian kesatuan dengan memberikan nilai kepada ahlinya yang berbeza. Pada mulanya, kami menetapkan bilangan sisi kepada 5 dan mencetak hasilnya. Seterusnya, kami menetapkan jejari 6.0 kepada bentuk dan mengeluarkan jejari. Akhir sekali, kami menetapkan titik tengah dengan koordinat (10, 20) kepada bentuk dan mencetak koordinat pusat.

Contoh 3: Kesatuan dengan Enum

Dalam C++, penghitungan, biasanya dirujuk sebagai enum, berfungsi untuk mentakrifkan koleksi pemalar kamiran yang dinamakan. Menggabungkan enum dengan kesatuan boleh berguna dalam senario di mana kita ingin mewakili pembolehubah yang boleh mengambil jenis yang berbeza, setiap satunya dikaitkan dengan nilai enum tertentu.

Berikut adalah contoh:

#include

menggunakan ruang nama std ;

enum Jenis data {

INTEGER ,

TERApung ,

CHAR

} ;

kesatuan DataValue {

int intValue ;

terapung floatValue ;

char charValue ;

} ;

struct Data {

Jenis DataType ;

Nilai DataValue ;

} ;

int utama ( )

{

Data data1 , data2 , data3 ;

data1. taip = INTEGER ;
data1. nilai . intValue = 42 ;

data2. taip = TERApung ;
data2. nilai . floatValue = 3.14f ;

data3. taip = CHAR ;
data3. nilai . charValue = 'A' ;

cout << 'Data 1:' << data1. nilai . intValue << endl ;
cout << 'Data 2:' << data2. nilai . floatValue << endl ;
cout << 'Data 3:' << data3. nilai . charValue << endl ;

kembali 0 ;

}

Untuk contoh ini, kami mempunyai program yang menggunakan enum, kesatuan dan struct untuk mencipta struktur data fleksibel yang mampu menyimpan jenis nilai yang berbeza. Enum 'DataType' ditakrifkan untuk mewakili tiga jenis data asas: INTEGER, FLOAT dan CHAR. Enum meningkatkan kebolehbacaan dan kebolehselenggaraan kod dengan menawarkan satu set pemalar integral bernama.

Kemudian, kami membuat kesatuan yang dipanggil 'DataValue' dengan tiga ahli: 'charValue' jenis char, 'floatValue' jenis apungan dan 'intValue' jenis int. Dengan kesatuan, ahli-ahli ini berkongsi lokasi memori yang sama yang membolehkan kesatuan untuk secara bergantian menampung nilai-nilai jenis yang berbeza. Struktur 'Data' kemudian dibuat yang terdiri daripada dua ahli: penghitung 'DataType' bernama 'jenis' dan kesatuan 'DataValue' bernama 'nilai'. Struktur ini membolehkan kami mengaitkan jenis data dengan nilai sepadannya, memberikan perwakilan berstruktur.

Dalam fungsi 'utama', kami memberi contoh tiga contoh struct 'Data': 'data1', 'data2', dan 'data3'. Kami menetapkan nilai kepada kejadian ini dengan menyatakan jenis data dan menetapkan nilai yang sesuai dalam kesatuan. Sebagai contoh, 'data1' diberikan dengan jenis INTEGER dengan nilai 42. Akhir sekali, kami menggunakan pernyataan 'cout' untuk mencetak nilai yang disimpan dalam setiap contoh 'Data'. Program ini mengeluarkan nilai integer 'data1', nilai titik terapung 'data2', dan nilai aksara 'data3'.

Contoh ini menggambarkan cara menggabungkan enum, kesatuan dan struct boleh digunakan untuk mencipta perwakilan data yang serba boleh dan selamat jenis dalam C++.

Kesimpulan

Kesatuan C++ menyediakan mekanisme yang berkuasa dan fleksibel untuk mengurus jenis data yang pelbagai dalam satu ruang memori. Contoh yang digambarkan dalam artikel ini menyerlahkan kebolehsuaian dan keberkesanan kesatuan dalam menangani pelbagai senario. Daripada penggunaan asas yang menunjukkan kebolehtukaran jenis data kepada aplikasi yang lebih kompleks yang melibatkan struktur dan enum, contoh ini menekankan kecekapan dan kebolehsuaian yang dibawa oleh kesatuan kepada pengaturcaraan C++.