반응형
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
#include<iostream>
#include<cstring>
using namespace std;
class Person
{
private:
char* name;
int age;
public:
Person(char* myName, int myAge)
{
int len = strlen(myName) + 1;
name = new char[len];
strcpy(name, myName);
age = myAge;
}
void ShowPersonInfo() const
{
cout << "이름 : " << name << endl;
cout << "나이 : " << age << endl;
}
~Person()
{
delete[]name;
cout << "called destructor!" << endl;
}
};
int main()
{
Person man1("Lee dong woo", 29);
Person man2 = man1;
return 0;
}
|
cs |
복사생성자를 공부하다가 마주한 오류
위의 코드를 따라 치게 되면
C에서는 문자열 리터럴이 char 배열이지만, C++에서는 const char 배열이기 때문에 다음과 같은 오류가 발생한다.
따라서 char* 변수명이 아닌 const char* 변수명으로 매개변수를 넘겨줘야 한다.
반응형
'언어 > C++' 카테고리의 다른 글
[C++] 가상 함수 (virtual) (0) | 2022.07.10 |
---|---|
[C++] Vector 원소 삭제(erase, remove) (0) | 2022.07.05 |
[C++] 깊은 복사와 얕은 복사 (0) | 2022.03.08 |
[C++] Upper_bound, Lower_bound (0) | 2022.02.13 |
[C++ STL] map (0) | 2022.01.21 |