Ví dụ thứ 2 như sau →
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
#include <iostream> using namespace std; class Test { public: void funN1(void) { cout << "non-static" << endl; } static void funS1(void) { funN1(); } }; int main(void) { Test object; Test::funS1(); object.funS1(); return 0; } |
Ví dụ này thể hiện một trường hợp khi một hàm static có tên funS1 gọi một hàm non-static khác có tên funN1. Một trường hợp như thế này là không thể, bởi vì hàm funN1 đang được gọi là hàm non-static, nó tồn tại khi và chỉ khi các đối tượng có chứa hàm này cũng tồn tại. Không thể truy cập thành công hàm này mà không cần đối tượng. Do đó chương trình này không thể biên dịch thành công.
Vậy chúng ta có thể điền kết quả vào ô thứ 2 như sau: