Sınıf tanımının içinde kullanmanın anlamı nedir?C++ kullanımı bir sınıfın içinde ne anlama geliyor?
class myClass {
public:
[...]
using anotherClass::method;
};
Sınıf tanımının içinde kullanmanın anlamı nedir?C++ kullanımı bir sınıfın içinde ne anlama geliyor?
class myClass {
public:
[...]
using anotherClass::method;
};
Bildirge unhides bir temel sınıf üyesi. Bu genellikle bir üye fonksiyonunun aşırı yüklenmesine izin vermek için kullanılır. Örnek:
class Base {
public:
void method() const;
};
class Derived : public Base {
public:
void method(int n) const;
// Without the using, you would get compile errors on d.method();
using Base::method;
};
vaka ben gördüm:
Ben geçersiz kılmak amacıyla A'dan foo işlevlerini gizler farklı bir imzaya sahip B'de yeni foo işlevi uygulayan Çünküclass A
{
void foo(int);
void foo(float);
}
class B : public A
{
void foo(string);
}
B b;
b.foo(12); // won't work!
Bu davranış yapardım:
class B : public A
{
void foo(string);
using A::foo;
}
çoğu zaman, bu gibi sözdizimi şöyle kullanılır:
class derived : public base {
public:
[...]
using base::method;
};
using
bildirimi bildirisi üst sınıftan bir üye bildirimi. Bu, bazen derived
numaralı başka bir üye bildiriminin üyeyi base
'dan gizleyebilmesi için gereklidir. anotherClass
virtual void f();
gibi üye işlevini içeren bir temel sınıftır ve
virtual void f(int);
gibi türetilmiş sınıfındaki fonksiyonun aşırı karar verirseniz
o f() 'de "gizler" temel sınıf. Örneğin, türetilmiş bir sınıfa bir işaretçi aracılığıyla f() çağrılması, derleyicinin artık taban sınıfından argüman almadan f() sürümünü görmediğinden bir hataya neden olur.
using Base::f;
yazarak
Eğer baz sınıfları ilk etapta işe o beklenen edilebileceği gibi, böylece aşırı yük çözünürlüğü sağlayan geri kapsam içine işlev getirebilir.