TAILIEUCHUNG - Thinking in Cplus plus (P26)

Tham khảo tài liệu 'thinking in cplus plus (p26)', công nghệ thông tin, kỹ thuật lập trình phục vụ nhu cầu học tập, nghiên cứu và làm việc hiệu quả | new X for int i 0 i i cout b i - vf endl purge b If you can always arrange for a virtual base class to have a default constructor you ll make things much easier for anyone who inherits from that class. Overhead The term pointer magic has been used to describe the way virtual inheritance is implemented. You can see the physical overhead of virtual inheritance with the following program C06 Virtual base class overhead include fstream using namespace std ofstream out class MBase public virtual void f const virtual MBase class NonVirtuallnheritance public MBase class Virtuallnheritance virtual public MBase class VirtualInheritance2 virtual public MBase class MI public Virtuallnheritance public VirtualInheritance2 define WRITE ARG out ARG ARG endl Chapter 15 Multiple Inheritance 351 int main MBase b WRITE sizeof b NonVirtuallnheritance nonv_inheritance WRITE sizeof nonv_inheritance Virtuallnheritance v_inheritance WRITE sizeof v_inheritance MI mi WRITE sizeof mi Each of these classes only contains a single byte and the core size is that byte. Because all these classes contain virtual functions you expect the object size to be bigger than the core size by a pointer at least - your compiler may also pad extra bytes into an object for alignment . The results are a bit surprising these are from one particular compiler yours may do it differently sizeof b 2 sizeof nonv_inheritance 2 sizeof v_inheritance 6 sizeof MI 12 Both b and nonv_inheritance contain the extra pointer as expected. But when virtual inheritance is added it would appear that the VPTR plus two extra pointers are added By the time the multiple inheritance is performed the object appears to contain five extra pointers however one of these is probably a second VPTR for the second multiply inherited subobject . The curious can certainly probe into your particular implementation and look at the assembly language for member selection to determine exactly what these extra

TAILIEUCHUNG - Chia sẻ tài liệu không giới hạn
Địa chỉ : 444 Hoang Hoa Tham, Hanoi, Viet Nam
Website : tailieuchung.com
Email : tailieuchung20@gmail.com
Tailieuchung.com là thư viện tài liệu trực tuyến, nơi chia sẽ trao đổi hàng triệu tài liệu như luận văn đồ án, sách, giáo trình, đề thi.
Chúng tôi không chịu trách nhiệm liên quan đến các vấn đề bản quyền nội dung tài liệu được thành viên tự nguyện đăng tải lên, nếu phát hiện thấy tài liệu xấu hoặc tài liệu có bản quyền xin hãy email cho chúng tôi.
Đã phát hiện trình chặn quảng cáo AdBlock
Trang web này phụ thuộc vào doanh thu từ số lần hiển thị quảng cáo để tồn tại. Vui lòng tắt trình chặn quảng cáo của bạn hoặc tạm dừng tính năng chặn quảng cáo cho trang web này.