>백엔드 개발 >C++ >C 클래스에서 정적 문자열 변수를 올바르게 초기화하는 방법은 무엇입니까?

C 클래스에서 정적 문자열 변수를 올바르게 초기화하는 방법은 무엇입니까?

Susan Sarandon
Susan Sarandon원래의
2024-12-08 17:45:12559검색

How to Properly Initialize Static String Variables in C   Classes?

C 클래스에서 정적 문자열 초기화

클래스 내에서 멤버 함수와 변수를 선언할 때 범위와 접근성이 중요한 고려 사항이 됩니다. 일부 멤버 함수가 클래스 객체에 직접 액세스하지 않고 이를 정적으로 만들기로 결정한 경우 해당 함수가 액세스하는 변수의 선언을 수정해야 할 수도 있습니다.

문제: 초기화 정적 문자열 변수

다음과 같은 문자열 변수가 class:

string RE_ANY = "([^\n]*)";
string RE_ANY_RELUCTANT = "([^\n]*?)";

정적 const 변수로 만들면 변경되지 않은 상태로 유지되지만 초기화 문제가 발생할 수 있습니다. 컴파일러는 정적 상수 적분 변수가 클래스 내에서만 초기화될 수 있다고 불평할 수 있습니다.

해결책: 외부 초기화

해결 방법으로 이러한 정적 문자열 변수를 초기화할 수 있습니다. 소스 파일의 클래스 외부. 예:

// Within the class
class Thing {
    static string RE_ANY;
    static string RE_ANY_RELUCTANT;
};

// In a source file
string Thing::RE_ANY = "([^\n]*)";
string Thing::RE_ANY_RELUCTANT = "([^\n]*?)";

주의: 정적 함수와 상수 함수 구별

이러한 문자열에 액세스하는 멤버 함수를 정적으로 만들지 말아야 한다는 점에 유의하는 것이 중요합니다. 여전히 클래스 멤버에 액세스해야 합니다. 대신, 클래스 멤버를 수정하는 것을 방지하는 const 함수로 만드는 것을 고려해보세요. 이는 불변성을 보장하면서 함수와 클래스 객체 사이에 필요한 연관을 유지합니다.

위 내용은 C 클래스에서 정적 문자열 변수를 올바르게 초기화하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.