C++에서 클래스에 동적으로 할당 된 데이터가 포함되어 있으면 일반적으로 복사 생성자 인 operator = 및 destructor를 명시 적으로 정의하는 것이 타당합니다. 그러나 이러한 특별한 방법의 활동은 겹칩니다. 좀 더 구체적으로 operator = 일반적으로 먼저 복사 작업을 수행 한 다음 복사 생성자에서와 비슷한 대처법을 사용합니다. 내 질문은
C++의 반환 값 메커니즘을 통해 퍼즐을 풀고 다음 코드를 작성하여 내 opion을 증명하고 코드의 결과 ("?"뒤에 출력이 표시됨)가 표시됩니다. 굵은 글씨) 나를 혼란스럽게하는 이유는 누구나 그 이유를 설명 할 수 있을까? 또는 컴파일러 벤더 (MS Visual C++)가 나를 위해 최적화했기 때문인가? #include <iostream>
class
내 클래스 내부의 정의 문제가 오전 : class Test{
protected:
int a;
int *b;
Teste() {}
public:
int getA() {return a;}
int getB() {if (b) return *b; else return 0;}
bool isB() {if(b
는 Address 클래스의 복사 생성자는 말합니다이 예제 코드 #include <iostream>
using namespace std;
class Address
{
public:
mutable unsigned key;
Address() : key(0) {};
Address(int a) : key(a) {};
다음 코드 : I 출력이 될 것으로 예상하면서 #include <iostream>
using namespace std;
struct A {
A(int a) { cout << "cast "; }
A(const A& a) { cout << "copy " ;}
};
int main() {
int x = 0;
A a
다음 코드에는 두 가지 질문이 있습니다. 먼저 사례 1과 CASE2의 차이점은 무엇입니까? 비 매개 변수 생성자가 없어서 CASE2가 컴파일되지 않는 것을 알 수 있습니다. CASE1이 컴파일되는 이유는 무엇입니까? CASE3와 CASE4의 차이점은 무엇입니까 둘째 ? 복사 생성자 나 대입 연산자가 호출되는 이유는 무엇입니까? 또 다른 목적은 이러한 경우에
기본 클래스와 복사 생성자에 대해 혼란스러워합니다. 는 어떻게 class A의 m 값뿐만 아니라 복사되도록 할, 내가 클래스 class A {
public:
A(int m) : m(m) { return; }
virtual ~A() { return; }
int m;
}
내가 class B 복사 할 때이 class B