메서드: 1. 비다형 유형의 변환에 사용되는 static_cast 2. 관련되지 않은 다른 유형으로 변환되는 reinterpret_cast, 변수의 const 속성을 삭제한 다음 할당 4. 클래스에 사용 상속 수준 간의 포인터 또는 참조 변환.
이 튜토리얼의 운영 환경: Windows 7 시스템, C++17 버전, Dell G3 컴퓨터.
C에서 유형 변환을 표준화하고 유형 변환의 가시성을 높이기 위해 C++에서는 네 가지 필수 유형 변환 연산자인 static_cast, reinterpret_cast, const_cast, Dynamic_cast를 도입했습니다.
이 연산자는 기본적으로 템플릿 클래스입니다.
다음은 별도로 소개됩니다.
1.static_cast
비다형성 유형의 변환(정적 변환)에 사용됩니다. C의 암시적 유형 변환에 해당하지만 두 가지 모두에 사용할 수는 없습니다. 정수와 정수 포인터 사이의 변환과 같은 관련 없는 유형의 변환입니다. 둘 다 4바이트이지만 하나는 데이터를 나타내고 다른 하나는 주소를 나타냅니다.
이 변환은 C 스타일 유형 변환과 유사하게 컴파일 타임에 완료되지만 다음 사항에 주의하십시오.파생 관계가 없는 두 클래스 유형 간에는 변환할 수 없습니다.원래 유형의 유형 수정자를 제거할 수 없습니다. , 예를 들어 const, 휘발성, __unaligned객체 변환 시 동적 유형 검사가 없기 때문에 기본 클래스 객체를 파생 클래스 객체로 변환할 때 보안 위험이 있습니다void Test() { //C中的方式 int i = 10; double d1 = i;//隐式类型转换 //int *p = i;//无法隐式类型转换,只能强制类型转换 int *p = (int*)i; //C++中的方式 double d2 = static_cast<double>(i); //相当于创建一个static_cast<double>类型的匿名对象赋值给d2 int* p2 = static_cast<int*>(i);//无法转换,会报错 }
2.reinterpret_cast
reinterpret의 의미 is 재해석은 한 유형을 관련 없는 다른 유형으로 변환할 수 있습니다.C의 강제 유형 변환에 해당하며, 암시적 변환을 수행할 수 없는 상황을 처리합니다.
void Test() { int i = 10; int* p2 = reinterpret_cast<int*>(i); }강제 유형 변환은 때때로 일부 문제를 격렬하게 처리할 수 있습니다.
다음 예:
매개변수가 있는 함수의 경우 매개변수를 전달하지 않고 어떻게 함수를 호출할 수 있나요?
void Fun(int s) { cout << s << endl; } typedef void(*FUNC)(); void Test() { FUNC pf = reinterpret_cast<FUNC>(Fun); pf(); }C에서의 캐스팅도 처리됩니다. 이 BUG 방법을 통해 함수 포인터를 변환하더라도 이러한 코드는 이식성이 없고 때로는 불확실한 결과를 생성하므로 이와 같이 사용하지 않는 것이 좋습니다. 예를 들어 여기서 s 출력 값은 하나의 Random 값이지만. 사용자가 외부 매개변수를 전달하지 않으면 함수가 호출될 때 형식 매개변수가 생성됩니다. 형식 매개변수는 초기화되지 않으며 자연스럽게 임의의 값입니다. 변수의 const 속성은 재할당에 편리합니다
void Test3() { const int i = 10; int *p = const_cast<int*>(&i); *p = 20; cout << i << endl; cout << *p << endl; }
4. 클래스 상속 계층 간의 참조 변환. 이는 주로 "안전한 다운캐스팅"을 수행하는 데 사용됩니다. 즉, 기본 클래스 개체의 포인터나 참조를 동일한 상속 수준의 다른 포인터나 참조로 변환하는 것입니다.
"첫 번째 변환"(즉, 파생 클래스 포인터 또는 참조 유형이 기본 클래스 유형으로 변환됨)의 경우 변환에 Dynamic_cast를 사용할 수 있지만 반드시 필요한 것은 아닙니다. 변환은 이미 달성될 수 있습니다. 결국 Dynamic_cast를 사용하려면 오버헤드가 필요합니다.
class Base { public: Base(){}; virtual void Show(){cout<<"This is Base calss";} }; class Derived:public Base { public: Derived(){}; void Show(){cout<<"This is Derived class";} }; int main() { Base *base ; Derived *der = new Derived; //base = dynamic_cast<Base*>(der); //正确,但不必要。 base = der; //先上转换总是安全的 base->Show(); system("pause"); }
추천 튜토리얼: "C#
"
위 내용은 C++ 유형을 변환하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

C#.NET은 여러 응용 프로그램 개발을 지원하는 강력한 도구 및 라이브러리를 제공하기 때문에 여전히 중요합니다. 1) C#은 .NET 프레임 워크를 결합하여 개발 효율적이고 편리하게 만듭니다. 2) C#의 타입 안전 및 쓰레기 수집 메커니즘은 장점을 향상시킵니다. 3) .NET은 크로스 플랫폼 실행 환경과 풍부한 API를 제공하여 개발 유연성을 향상시킵니다.

C#.NETISVERSATILEFORBOTHWEBBANDDESKTOPDEVENTROMMENT.1) FORWEB, useASP.NETFORRICHINTERFACES.3) FORDESKTOP.3) USEXAMARINFORCROSS-PLATFORMDEEVENTRIMMENT, LINABILEDEV, MACODEDEV, and MACODEDOWS, 및 MACODEDOWS.

C# 및 .NET는 지속적인 업데이트 및 최적화를 통해 신흥 기술의 요구에 적응합니다. 1) C# 9.0 및 .NET5는 레코드 유형 및 성능 최적화를 소개합니다. 2) .NETCORE는 클라우드 네이티브 및 컨테이너화 된 지원을 향상시킵니다. 3) ASP.NETCORE는 최신 웹 기술과 통합됩니다. 4) ML.NET는 기계 학습 및 인공 지능을 지원합니다. 5) 비동기 프로그래밍 및 모범 사례는 성능을 향상시킵니다.

C#.netissuitable forenterprise-levelapplications는 richlibraries, androbustperformance, 그러나 itmaynotbeidealforcross-platformdevelopmentorwhenrawspeediscritical, wherelanguagesslikerustorthightordogrordogrognegrognegrognegrognecross-platformdevelopmentor.

.NET에서 C#의 프로그래밍 프로세스에는 다음 단계가 포함됩니다. 1) C# 코드 작성, 2) 중간 언어 (IL)로 컴파일하고 .NET 런타임 (CLR)에 의해 실행됩니다. .NET에서 C#의 장점은 현대적인 구문, 강력한 유형 시스템 및 .NET 프레임 워크와의 긴밀한 통합으로 데스크탑 응용 프로그램에서 웹 서비스에 이르기까지 다양한 개발 시나리오에 적합합니다.

C#은 Microsoft가 개발 한 최신 객체 지향 프로그래밍 언어이며 .NET 프레임 워크의 일부로 개발되었습니다. 1.C#은 캡슐화, 상속 및 다형성을 포함한 객체 지향 프로그래밍 (OOP)을 지원합니다. 2. C#의 비동기 프로그래밍은 응용 프로그램 응답 성을 향상시키기 위해 비동기 및 키워드를 기다리는 키워드를 통해 구현됩니다. 3. LINQ를 사용하여 데이터 컬렉션을 간결하게 처리하십시오. 4. 일반적인 오류에는 NULL 참조 예외 및 인덱스 외 예외가 포함됩니다. 디버깅 기술에는 디버거 사용 및 예외 처리가 포함됩니다. 5. 성능 최적화에는 StringBuilder 사용 및 불필요한 포장 및 Unboxing을 피하는 것이 포함됩니다.

C#.NET 애플리케이션에 대한 테스트 전략에는 단위 테스트, 통합 테스트 및 엔드 투 엔드 테스트가 포함됩니다. 1. 단위 테스트를 통해 MSTEST, NUNIT 또는 XUNIT 프레임 워크를 사용하여 코드의 최소 단위가 독립적으로 작동합니다. 2. 통합 테스트는 일반적으로 사용되는 시뮬레이션 된 데이터 및 외부 서비스를 결합한 여러 장치의 기능을 확인합니다. 3. 엔드 투 엔드 테스트는 사용자의 완전한 작동 프로세스를 시뮬레이션하며 셀레늄은 일반적으로 자동 테스트에 사용됩니다.

C# 수석 개발자와의 인터뷰에는 비동기 프로그래밍, LINQ 및 .NET 프레임 워크의 내부 작업 원리와 같은 핵심 지식을 마스터하는 것이 필요합니다. 1. 비동기 프로그래밍은 비동기를 통해 작업을 단순화하고 응용 프로그램 응답 성을 향상시키기 위해 기다리고 있습니다. 2.linq는 SQL 스타일로 데이터를 운영하고 성능에주의를 기울입니다. 3. Net Framework의 CLR은 메모리를 관리하며 가비지 컬렉션은주의해서 사용해야합니다.


핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

Atom Editor Mac 버전 다운로드
가장 인기 있는 오픈 소스 편집기

안전한 시험 브라우저
안전한 시험 브라우저는 온라인 시험을 안전하게 치르기 위한 보안 브라우저 환경입니다. 이 소프트웨어는 모든 컴퓨터를 안전한 워크스테이션으로 바꿔줍니다. 이는 모든 유틸리티에 대한 액세스를 제어하고 학생들이 승인되지 않은 리소스를 사용하는 것을 방지합니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

SublimeText3 영어 버전
권장 사항: Win 버전, 코드 프롬프트 지원!

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기
