C++ 'da static_cast<Type>(object)
'u öğreniyorum. Type
'un kopya kurucusunu object
ile buldum. Doğru mu? Eğer doğruysa, neden kopyalıyor? Sadece nesne tarafından işaret edilen belleğin nasıl kullanılacağını değiştirdiğini düşündüm. Kopya oluşturması gerekiyorsa, static_cast
düşündüğümden daha fazla maliyete sahiptir. Maliyetten bakmam gerekiyor mu?Neden static_cast <Type> (object) nesneyi Type'a kopyalar?
Aşağıdakiler
#include <iostream>
class Base {
public:
Base() {};
Base(const Base& org) {
std::cout << "Base Copy Constructor" << std::endl;
};
virtual ~Base() {};
};
class Derived : public Base {
public:
void static_casting(void) {
static_cast<Base>(*this);
}
};
void test_static_cast_copy_constructor(void) {
Derived a;
a.static_casting();
}
Çok teşekkür ederim, test kodu vardır.
Açık olmaması durumunda, bu dökümün bulunduğu nesneyi [https://stackoverflow.com/questions/274626/what-is-object-slicing]. – WhozCraig
Belleğin nasıl kullanıldığını değiştirmek isterseniz, static_cast 'kullanın. Dilimleme ile ilgili tüm yorumlar hala geçerlidir. –
"Sadece nesne tarafından işaret edilen belleğin nasıl kullanılacağını değiştirdiğini düşündüm." Yanlış düşünmüşsün. Aslında, çoğu durumda, static_cast (object) ', * bazı sanal nesne' value' için 'Type value (object)' yapmak gibi * tanımlanmıştır * Tanım gereği bunu yapar. Statik_cast'in anlamı budur. –
AnT