Giriş
C++ ile bir sınıfa tanımlanabilecek çok sayıda operator var. Aşağıda notlarım var.
== (Eşitlik) operatörü
Eşitlik operatörü iki şekilde kullanılabiliyor. Bunlar sınıfın == metodu olarak tanımlanması veya global bir metod olarak tanımlanması.
Sınıfın İçine Tanımlama
Metod parametresi ve metodun kendisi const olmalı
Örnek:
Örnek:
std::pair için özel tanımlanmış = operatörü bulunuyor.
Bu atama operatörü ile
std::pair <int,int> bar = std::make_pair (10.5,'A'); //ok: implicit conversion from pair<double,char>
yapılabilir.
-> operatörü
Bir sınıfı sarmalayan başka bir sınıf için tanımlanır.
Bu operatör aşağıdaki gibi tanımlanabilir.
Eğer pointer bir sınıfa pointer varsa ve ++operatörünü çağırmak istiyorsak aşağıdaki gibi yapabiliriz.
Dönüşüm operatörleri ile sınıfın içindeki bir alan dışarıya açılır veya dönüştürülerek kullanılır.
File operatörü
Örnek:
C++11 ile dönüşüm operatörünün rvalue ile kullanılmamasını sağlamak için aşağıdaki gibi yapılabilir.
C++ ile bir sınıfa tanımlanabilecek çok sayıda operator var. Aşağıda notlarım var.
== (Eşitlik) operatörü
Eşitlik operatörü iki şekilde kullanılabiliyor. Bunlar sınıfın == metodu olarak tanımlanması veya global bir metod olarak tanımlanması.
Sınıfın İçine Tanımlama
Metod parametresi ve metodun kendisi const olmalı
Örnek:
bool operator == (const ContourEdgeIndexes& rhs) const {}Global Tanımlama
Örnek:
bool operator == (var const& v1, var const& v2)
{
return (v1.name == v2.name) && (v1.value == v2.value);
}
= (Değer Atama )operatörüstd::pair için özel tanımlanmış = operatörü bulunuyor.
std::pair <int,int> bar = std::make_pair (10.5,'A'); //ok: implicit conversion from pair<double,char>
yapılabilir.
-> operatörü
Bir sınıfı sarmalayan başka bir sınıf için tanımlanır.
MyObject* MyWrapper::operator -> ()++operatörü
{
return m_ptr;
}
Bu operatör aşağıdaki gibi tanımlanabilir.
Eğer pointer bir sınıfa pointer varsa ve ++operatörünü çağırmak istiyorsak aşağıdaki gibi yapabiliriz.
std::atomic_uint64_t* counter;Dönüşüm Operatörleri
counter->operator++();
Dönüşüm operatörleri ile sınıfın içindeki bir alan dışarıya açılır veya dönüştürülerek kullanılır.
File operatörü
Örnek:
class File_ptr{
FILE* p;
public:
File_ptr(const char* n, const char* a){p = fopen(n, a);}
File_ptr(FILE* pp) { p = pp; }
~File_ptr() {fclose(p);}
operator FILE* () {return p;}
};C++11 ile dönüşüm operatörünün rvalue ile kullanılmamasını sağlamak için aşağıdaki gibi yapılabilir.
operator FILE* () & { return p; }
// Note this -----^
Hiç yorum yok:
Yorum Gönder