[CODE FUN] Call function của class qua con trỏ null trong C++

Chương trình sau call function testMethod1 của class Sample qua con trỏ nullptr nhưng chương trình vẫn chạy bình thường và in ra “testMethod1”. HỎI TẠI SAO ???


Giải thích

Khi call hàm thành viên không phải hàm static (non-static) của một object của class thì compiler sẽ truyền vào tham số ngầm là con trỏ this. Trong trường hợp này, tuy con trỏ this là một giá null nhưng hàm được call là testMethod1 lại không truy cập biến member của class, tức là ko truy cập con trỏ this. Và do đó chương trình vẫn chạy bình thường mà không bị crash. Nếu thay vì call testMethod1  mà call testMethod2 thì chương trình sẽ oẳng ngay, các bạn cứ thử mà xem.

 

— Phạm Minh Tuấn (Shun) —