가장 끔찍한 것은 실수를 저지르는 것이 아니라 찾는 것입니다. 지금까지 나는 클래스 변수에 대한 나의 이해에 문제가 있다는 것을 알고 있습니다.
아마도 클래스 변수의 빈번한 사용이 부족하기 때문일 수 있으며이 문제는 발견되지 않았습니다 . 최근에 C ++를보고있을 때 어떤 클래스 변수가 무엇인지 배웠습니까 ?
클래스 변수와 멤버 변수의 유일한 차이점은 클래스 변수가 클래스 이름을 통해 직접 액세스 할 수 있고 정적이라고 생각했습니다. 멤버 변수는 인스턴스를 통해 인스턴스화되고 액세스해야합니다.
한 클래스에 클래스 변수가 하나만 있다는 것을 무시하지 않았으며 각 인스턴스는 동일합니다. 한 예에서 수정하면 다른 경우에 클래스 변수에 영향을 미칩니다 ... (일반적으로 이로 인해 발생하는 버그는 없지만 여전히인지 취약성을 보충해야합니다).
Java와 Python으로 작성된 2 가지 예는 다음과 같습니다.
공개 클래스 oo {public static string s; 공개 문자열 m; 정적 {s = "Ever"; } public static void main (string [] args) {oo o1 = new oo (); oo o2 = 새로운 oo (); o1.m = "한 번"; // 다른 인스턴스의 클래스 변수의 값/주소는 동일한 system.out.println (o1.s)입니다. System.out.println (O2.S); System.out.println (o1.s.hashcode ()); System.out.println (o2.s.hashcode ()); o1.s = "123"; System.out.println (o2.s); // 클래스 변수를 변경하고 다른 인스턴스 System.out.println (o1.m.hashcode ()); System.out.println (o2.m.hashcode ()); // nullpointerexception // 멤버 변수는 주소가 다릅니다}}}#!/bin/pythonclass b : def whoami (self) : print ( "__ class __ :%s, self .__ 클래스 __ :%s"%(__ class __, self .__ class __)) 클래스 C (b) : count = 0 def __init __ (self) : super (c, self). self.num += 1 def print (self) : print ( "count_id :%s, num_id :%s"%(id (__ class __. count), id (self.num))))) print ( "count :%d, num :%d"%(__ class __. count, self.num) i2 = c () i1.hoami () i. 1 회 씩, I2 멤버 변수는 2 배 증가하고 클래스 변수는 총 i1.add () i2.add () i2.add () i1.print () i2.print ()에서 3 배 증가합니다.
위는이 기사에 관한 것입니다. 휴일은 내일 끝날 것입니다. 모든 사람이 적극적으로 자신의 작업에 적극적으로 헌신하고 편집자가 공유 한 기사에 계속주의를 기울이기를 바랍니다.