
socket관련 시스템콜 함수들을 사용해 보았다.#include #include // server.cpp #include #include #define PORT 8080 int main() { int sock, new_sock; struct sockaddr_in addrStruct; // 소켓 만들기 if ((sock = socket(AF_INET, SOCK_STREAM, 0)) == 0) { std::cerr

상속 class 자식클래스 : 접근제한자(public, protected, private) 부모클래스 { 추가 멤버 선언 }; 틀을 가져다 그대로 복사하고 추가하는 느낌으로 이해했다. 자식 클래스에선 부모의 private는 접근할 수 없다. private는 해당 클래스 내에서만 접근이 가능하고, protected는 해당 클래스와 하위 클래스에서 접근이 가능하다. 접근 제한자를 설정하면 그 접근 제한자보다 높은 권한? 은 같은 권한으로 바꾼다. ex) private로 상속하면, 상속받은 부모의 public멤버도 다 private처리됨 private < protected < public public으로 상속하면 그냥 권한 그대로 쓴다는 뜻. virtual ? 자식 클래스에서 함수를 재정의(override)할..
// 포인터와 레퍼런스의 차이를 알아보는 코드이다. intmain() { std::stringstr = "HI THIS IS BRAIN"; std::string*stringPTR; std::string&stringREF = str; // 레퍼런스는 선언하면서 초기화 해줘야 한다. stringPTR = &str; // 주소 출력부 std::cout
//객체의 포인터를 반환하는 함수이다. Zombie* newZombie(std::string name) { Zombie *zom = new Zombie(name); return (zom); } cpp에서 동적할당을 하고 싶을 땐 객체이름 *이름 = new 생성자(arg); 이런식으로 한다. //객체 배열 포인터를 반환하는 함수이다. Zombie* zombieHorde( int N, std::string name ) { Zombie *zom = new Zombie[N]; for (int i = 0; i < N; i++) zom[i].setName(name); return (zom); } 객체 배열을 동적할당 할 땐 생성자 안에 arg를 직접 넣을 수가 없다. 만든 후에 초기화 해 주는 모습이다. intma..
C++의 헤더에 정의된 ifstream와 ofstream 클래스는 파일의 입력 및 출력 작업을 담당합니다. ifstream는 파일로부터 데이터를 읽는 데 사용되고, ofstream는 파일에 데이터를 쓰는 데 사용됩니다. 아래에 각 클래스의 기본 사용법을 설명하겠습니다. ifstream 사용 방법: 헤더 파일을 포함시킵니다: #include ifstream 객체를 선언하고 파일을 엽니다: ifstream inputFile("파일명"); 파일을 열었는지 확인합니다: if (inputFile.is_open()) { // 파일이 열렸을 때 수행할 작업을 여기에 작성합니다. } else { // 파일을 열지 못했을 때 수행할 작업을 여기에 작성합니다. } 파일에서 데이터를 읽습니다: int number; inpu..