0
다음 코드를 고려 보여줍니다 : 나는 몸 시퀀스를 가지고 가정, 내 코드에서정적 정수 예기치 않은 동작이
class my_class;
// *** constructor
function new(string name = "");
super.new(name);
endfunction
// ** my_function
function void my_function();
static int my_static_int = 0;
my_static_int++;
$display("my_static_int = %0d", my_static_int);
endfunction
endclass
을 -
// ** body
task body();
my_class my_class_A = new;
my_class_A.my_function();
endtask
내 문제는 그 전이라면 내 테스트에서 두 번 두 번 body
을 호출하려면 두 번째로 my_static_int
이 1이 아닌 예상 값 2를가집니다.
my_class_A
이 body가 실행될 때마다 파괴됩니다 (% p를 사용하여 이것을 확인합니다), 완전히 다른 객체 인 my_class
을 다시 실행해서는 안됩니다.
아마도 여기에 내 이해가 부족합니다. 감사합니다
나는 클래스 변수로 만들었는데, 이것은 보통 내가하는 일이다 (나는 다른 것을 시도 할 것이라고 생각했다). 이 동작이 다른 OO 언어와 다른가요? 클래스의 모든 객체에는 정적 변수의 자체 복사본이 있다고 가정했습니다. – noobuntu
SV 정적 클래스 변수 동작은 Java 및 C++과 동일합니다. –