Làm gì :: Làm gì trong C++?

Lam Gi Lam Gi Trong C



C++ là một ngôn ngữ lập trình linh hoạt cung cấp cho các nhà phát triển nhiều chức năng. Một trong những tính năng được sử dụng phổ biến nhất trong C++ là toán tử phân giải phạm vi , còn được gọi là dấu hai chấm (::) . Mặc dù là một phần quan trọng của ngôn ngữ, dấu hai chấm toán tử có thể gây nhầm lẫn cho nhiều nhà phát triển, đặc biệt là những người mới làm quen với nó.

Trong hướng dẫn này, chúng ta sẽ xem xét toán tử dấu hai chấm (::) trong C++ và cách nó hoạt động trong các tình huống khác nhau.

Làm gì :: Làm gì trong C++?

Trong C++, các độ phân giải phạm vi nhà điều hành (::) được sử dụng để truy xuất tên của biến có ở các cấp phạm vi khác nhau. Phạm vi trong lập trình đề cập đến ngữ cảnh mà các biến và hàm có thể được truy cập.







Công dụng của :: trong các trường hợp khác nhau trong C++

Trong C++, các toán tử phân giải phạm vi (::) có nhiều cách sử dụng khác nhau tùy thuộc vào ngữ cảnh mà nó được sử dụng. Sau đây là một số cách sử dụng đáng chú ý của toán tử này:



1: Truy cập một biến hoặc hàm trong một không gian tên khác

MỘT không gian tên được sử dụng trong C++ để nhóm các hàm, lớp và biến có liên quan để tránh xung đột đặt tên. Khi bạn định nghĩa một biến hoặc hàm trong một không gian tên , tên của biến hoặc hàm chỉ hiển thị trong đó không gian tên .



Trong C++, bạn có thể sử dụng toán tử phân giải phạm vi (::) cùng với không gian tên tên và tên biến hoặc tên hàm để truy cập một biến hoặc hàm được xác định trong một không gian tên khác. Điều này cho phép bạn truy cập biến hoặc hàm từ một không gian tên khác với cái mà nó được tạo ra.





Để hiểu trường hợp trên, hãy xem đoạn mã sau làm ví dụ:

#include

sử dụng không gian tên std ;

toán không gian tên {

hằng số gấp đôi số Pi = 3.14159 ;

gấp đôi quảng trường ( gấp đôi x ) {

trở lại x * x ;

}

}

int chủ yếu ( ) {

cout << 'Giá trị của PI là:' << toán học :: số Pi << kết thúc ;

cout << 'Bình phương của 5 là:' << toán học :: quảng trường ( 5 ) << kết thúc ;

trở lại 0 ;

}

Đoạn mã trên sử dụng không gian tên toán học để truy cập vào 'SỐ PI' hằng số và 'quảng trường' chức năng sử dụng toán tử phân giải phạm vi “::” . Sau đó, nó in các giá trị ra bàn điều khiển.



đầu ra

2: Truy cập biến toàn cục trong chương trình

Khi có cùng tên biến cục bộ và biến toàn cục trong chương trình, biến cục bộ có thể ẩn biến toàn cục. Trong những tình huống như vậy, bạn có thể sử dụng toán tử phân giải phạm vi (::) để truy cập biến toàn cục. Toán tử này cho phép chúng ta tham chiếu rõ ràng đến biến toàn cục dựa trên phạm vi của nó.

Ví dụ, trong đoạn mã dưới đây, chúng tôi đã đề cập đến biến toàn cục 'Một ' thông qua toán tử phân giải phạm vi (::) , từ bên trong một hàm nơi một biến cục bộ có cùng tên đã được xác định:

#include

sử dụng không gian tên std ;

int Một = mười lăm ;

int chủ yếu ( )

{

int Một = 35 ;

cout << 'Giá trị của biến toàn cục a là' << :: Một << kết thúc ;

cout << 'Giá trị của biến cục bộ a là' << Một << kết thúc ;

trở lại 0 ;

}

Trong đoạn mã trên, biến a xuất hiện bên ngoài chức năng chính là biến toàn cục và biến a trong hàm chính là biến cục bộ có cùng tên với biến toàn cục. Trong câu lệnh cout, chúng ta đã sử dụng toán tử phân giải phạm vi để in biến toàn cục Một .

đầu ra

3: Định nghĩa một hàm bên ngoài lớp

Trong C++, bạn có thể định nghĩa một hàm lớp bên ngoài định nghĩa lớp và nó có thể được thực hiện bằng cách sử dụng toán tử phân giải phạm vi (::) để chỉ định hàm đó thuộc về lớp nào. Điều này là cần thiết vì hàm được định nghĩa bên ngoài phạm vi lớp.

Đây là một mã ví dụ minh họa việc sử dụng này toán tử phân giải phạm vi :

#include

sử dụng không gian tên std ;



lớp myClass {

công cộng :

khoảng trống chức năng của tôi ( ) ;

} ;

khoảng trống lớp học của tôi :: chức năng của tôi ( ) {

cout << 'myfunction() Đã gọi!' ;

}

int chủ yếu ( )

{

myClass lớpObj ;

classObj. chức năng của tôi ( ) ;

trở lại 0 ;

}

Trong đoạn mã trên, hàm thành viên myfunction() được định nghĩa bên ngoài lớp bằng cách sử dụng toán tử phân giải phạm vi :: để xác định rằng myfunction() thuộc lớp myClass.

đầu ra

4: Truy cập các thành viên tĩnh của lớp

Trong C++, khi có một thành viên tĩnh và một biến cục bộ có cùng tên xuất hiện trong lớp, toán tử phân giải phạm vi (::) có thể được sử dụng để truy cập các thành viên tĩnh của một lớp. Điều này cho phép chương trình phân biệt giữa biến cục bộ và thành viên tĩnh.

Đây là một mã ví dụ liên quan đến việc sử dụng toán tử phân giải phạm vi cho một trường hợp như vậy:

#include

sử dụng không gian tên std ;

lớp myClass {

công cộng :

tĩnh int myStatVar ;

} ;

int lớp học của tôi :: myStatVar = 5 ;

int chủ yếu ( ) {

int myStatVar = 10 ;

cout << 'Biến cục bộ myStatVar: ' << myStatVar << kết thúc ;

cout << 'Biến lớp myStatVar:' << lớp học của tôi :: myStatVar << kết thúc ;

trở lại 0 ;

}

Chương trình trên đầu tiên định nghĩa một lớp lớp học của tôi với một biến thành viên tĩnh myStatVar . Sau đó, nó định nghĩa một biến cục bộ có cùng tên bên trong hàm chính của chương trình. Để truy cập biến lớp, toán tử phân giải phạm vi (::) được sử dụng với tên lớp lớp học của tôi . Chương trình xuất giá trị của cả hai biến ra bàn điều khiển.

đầu ra

5: Sử dụng với nhiều kế thừa

Các toán tử phân giải phạm vi (::) cũng được sử dụng để chỉ ra phiên bản nào của thành viên sẽ được sử dụng khi một lớp C++ được dẫn xuất từ ​​nhiều lớp cha có các biến thành viên hoặc hàm có cùng tên. Chúng tôi có thể phân biệt giữa các phiên bản khác nhau của cùng một thành viên bằng cách sử dụng toán tử phân giải phạm vi theo sau là tên lớp cha và tên của thành viên.

#include

sử dụng không gian tên std ;

lớp Phụ huynh1 {

công cộng :

khoảng trống in ( ) {

cout << 'Đây là chức năng in lớp Parent1.' << kết thúc ;

}

} ;

lớp Parent2 {
công cộng :
khoảng trống in ( ) {
cout << 'Đây là chức năng in lớp Parent2.' << kết thúc ;
}
} ;
lớp myClass : công khai Parent1 , công khai Parent2 {
riêng tư :
int trên một ;

công cộng :
lớp học của tôi ( int N ) {
trên một = N ;
}
khoảng trống in ( ) {
Phụ huynh1 :: in ( ) ; //gọi hàm print của Parent1
Phụ huynh2 :: in ( ) ; //gọi hàm print của Parent2
cout << 'Giá trị của num là:' << trên một << kết thúc ; //in ra giá trị của num
}
} ;
int chủ yếu ( ) {
myClass obj ( 42 ) ; // tạo một đối tượng của MyClass với num khởi tạo là 42
đối tượng in ( ) ; //gọi hàm print() của đối tượng
trở lại 0 ;
}

Chương trình trên minh họa việc sử dụng toán tử phân giải phạm vi (::) để phân biệt giữa các chức năng in của Phụ huynh1 Phụ huynh2 khi cả hai lớp được kế thừa bởi lớp học của tôi. Bằng cách gọi các chức năng với lớp phụ huynh tên đứng trước tên hàm, chúng ta có thể chỉ định phiên bản nào của hàm sẽ sử dụng.

đầu ra

dòng dưới cùng

Các toán tử phân giải phạm vi (::) là một thành phần quan trọng trong C++ được sử dụng để truy cập các tên biến ở các mức phạm vi khác nhau. Toán tử có nhiều cách sử dụng khác nhau, bao gồm truy cập một biến hoặc hàm trong một không gian tên khác, truy cập một biến toàn cục, xác định một hàm bên ngoài lớp, truy cập các thành viên tĩnh của một lớp và sử dụng nhiều kế thừa. Mặc dù nó có thể gây nhầm lẫn cho các nhà phát triển mới, hiểu được toán tử phân giải phạm vi (::) là điều cần thiết để thực hành lập trình tốt.