동적할당/생성자/소멸자

sz L·2023년 3월 27일
1

C++

목록 보기
17/40
post-thumbnail
#include <iostream>
using namespace std;
#pragma warning(disable:4996)

class Myclass
{
private:
	int age;
	char id;
	char * name;

	//멤버함수(=메소드): 기능
public:
	Myclass(int mage, char mid, char* mname); // 생성자 원형
	void getData(); // 메소드 원형(선언)	
	~Myclass();
};

Myclass::Myclass(int mage, char mid, char* mname) :age(mage), id(mid) // 생성자 정의, 멤버 이니셜라이저를 이용한 멤버 초기화
{
	name = new char[10]; // 메모리 동적 할당
	strcpy(name, mname);
}

Myclass::~Myclass()
{
	delete[]name;
	cout << "객체 소멸 완료!" << endl;
}

void Myclass::getData() // 메소드 정의
{
	cout << id << " " << name << " " << age << endl;
}

int main()
{
	Myclass sc1(25, 'W', "sujin");
	sc1.getData();

	return 0;
}


동적 메모리 할당

#include <iostream>
using namespace std;
#pragma warning(disable:4996)

class Human {
private:
	char* name;
	char id[15];
	int age;
public:
	Human(const char *aname, char aid[15], int aage) {
		name = new char[strlen(aname) + 1];
		strcpy(name, aname);
		strcpy(id, aid);
		age = aage;
	}
	~Human() {
		delete[] name;
	}
	void getData();
};


void Human::getData() {
	cout << "이름: " << name << "\t" << "주민번호: " << id << "\t" << "나이: " << age << endl;
}

int main() {
	Human sujin("이수진", "991130-1112233", 25);
	sujin.getData();

	return 0;
}

profile
가랑비는 맞는다 하지만 폭풍은 내 것이야

0개의 댓글