int a = 5
과 int a(5)
은 모두 표준 출력에 표시 될 때 동일한 출력을 생성합니다. 또한 int* b = new int
과 int* b(new int)
은 같은 것으로 보입니다. 그것들은 변수를 초기화하고 포인터를 선언하는 두 가지 다른 방법입니까, 아니면 더 큰 그림이 있습니까? 솔직히 할당 연산자가없는 원시 데이터 형식을 초기화 할 수 있는지 전혀 몰랐습니다.C++에서 int a = 5와 int a (5)는 동일합니까?
0
A
답변
2
예, 동일합니다.
반면에 클래스 유형의 경우에는 약간 다릅니다.
struct S {
S(int);
S(const S&);
};
S s(5); // 1
S ss = 5; // 2
라인 1은 s
를 구성 S(int)
를 사용하여 표시했다. 2로 표시된 줄은 조금 더 복잡합니다. 형식적으로 S(int)
을 사용하여 S
유형의 임시 개체를 만든 다음 S(const S&)
을 사용하여 임시로 ss
에 복사합니다.
그러나 컴파일러는 S(int)
으로 직접 ss
을 구성 할 수 있으며 실제로 모든 컴파일러가이를 수행합니다. 그러나 복사 생성자는 여전히 존재해야하며 액세스 할 수 있어야합니다. 만 사용이 생략됩니다. 따라서 S(const S&)
이 비공개로 표시된 경우 2라고 표시된 줄이 잘못 형성됩니다. 호출 할 때 알려주는 내용을 std::cout
에 쓰는 복사 생성자를 작성하여이 문제를 해결할 수 있습니다. 컴파일러는 눈에 보이는 부작용이 있더라도 해당 호출을 건너 뛸 수 있습니다.
관련 문제
- 1. int * p = & a ++ 및 int * p = & ++ a
- 2. "int * a = new int"와 "int * a = new int [5]"의 차이점은 무엇입니까?
- 3. int * ptr = (int *) (& a + 1);
- 4. int a = (int) ((0.7 + 0.1) * 10). 왜 a = 7입니까?
- 5. 차이점 extern int a; extern int a = 42;
- 6. INT &b = a;는 ++
- 7. "int * a = (int [2]) {0, 2};" 정확히합니까?
- 8. 스칼라. Explain {a : Int => Int}
- 9. int * x는 int * int x와 동일합니까?
- 10. 은 int a [10] = {0,1,2,3,4,5,6,7,8,9}입니다. 같은 int * a = {0,1,2,3,4,5,6,7,8,9} C++에서?
- 11. int a, b = 0과 int a = 0, int b = 0의 차이점
- 12. C++에서 "int a();"의 효과는 무엇입니까?
- 13. double a = a + int b와 int a + = double b의 차이점은 무엇입니까?
- 14. 이것은 무엇을 의미합니까? (int &) a
- 15. C에서 int to int 변환 오류
- 16. int ** 및 int [] [] C#에서 동일합니까?
- 17. 하스켈 유형 오류 : 유형 : a Int, 일치하지 않음 : Int
- 18. C에서 int 인쇄
- 19. "def someFun [_] (a : Int) = a", 경고가없고 오류도 없습니다. 표준? 호기심에서
- 20. C 블록은 표현식이됩니다 ({int a = 1; int b = 2; a + b;})는 3과 같습니다.
- 21. 지도에 a 및 b 데이터 유형이 있습니다. <int,int> a, b
- 22. "int N = a == b? a : a + b == 10? a + b : 0;"의 의미
- 23. $ a = & $ b는 $ a = $ n이며, $ b = $ n과 동일합니까?
- 24. C에서 다중 int 배열을 비교하는 int #
- 25. 네이티브 메소드를 public 네이티브로 정의하는 것이 맞습니까? synchronized int doSum (int a, int b)?
- 26. 배열의 모든 요소의 합계를 계산하는 int caluculate_sum (int * a, int size) 함수를 작성하십시오.
- 27. 스칼라 (INT, INT) => 지능 (INT, INT) => Int 인
- 28. 로그인 C에서 int 확장
- 29. C에서 int 4 chars까지
- 30. C에서 짧은 int 리터럴
예 동일합니다. 'int a = 5;'에는 대입 연산자가 없습니다. '= '기호는 초기화 구문의 일부입니다. –
in C++ 11'int a {5};'도 작동합니다. – Asu
내 답변이 커뮤니티에서 받아 들여지지 않았으므로 삭제했지만 누군가가 프리미티브와 클래스 간의 차이점과 구별이 중요 할 때 종합적인 답변을 게시해야한다고 생각합니다. – kabanus