본문 바로가기
C++

[C++ 프로그래밍] 7주차 멤버의 접근 속성클래스와 객체 만들기

by heeaeeeee 2023. 10. 19.

1. struct

#include <iostream>
struct Dog {
    int age;
    double weight;
};
int main()
{
    Dog coco; //struct 생략 가능
    coco.age = 1;
    coco.weight = 1.5;
    std::cout << coco.age << "  " << coco.weight << std::endl;
}

c언어에서는 struct 도구라고 쓰고 c++언어 도그라고 써도 된다(생략 가능)

2. struct 대신 class로 변경 > 오류남

#include <iostream>
class Dog {
private:
    int age;
    double weight;
    int getAge() {
        return age;
    }
    void setAge(int a) {
        age = a;
    }
};
int main()
{
    Dog coco; //struct 생략 가능
    coco.age = 1; //'Dog::age': private 멤버('Dog' 클래스에서 선언)에 액세스할 수 없습니다.
    coco.weight = 1.5;
    std::cout << coco.age << "  " << coco.weight << std::endl; 
}

3. C와 C++ 차이점

아무것도 안쓰면 private이 기본

4. 정수(Integer) 클래스와 객체

class명 : Integer

객체명 : Val1(이렇게 만들지 않음), Val2

5. Dog 클래스

#include <iostream>
class Dog {
private:
    int age;
    double weight;
public:
    int getAge() {
        return age;
    }
    void setAge(int a) {
        age = a;
    }
public:
    double getweight() {
        return weight;
    }
    void setweight(double a) {
        weight = a;
    }
};
int main()
{
    Dog coco; //struct 생략 가능
    coco.setAge(1);
    coco.setweight(1.5);
    std::cout << coco.getAge() << "  " << coco.getweight() << std::endl;
}

6. 클래스 멤버의 접근 권한

프라이벗 콜론은 안써도 됨 접근 속성이 프라이벗이 기본

7. Access modifiers

생략 가능한 기본 접근 속성

8. 클래스 멤버의 접근 권한

접근 속성이 3가지가 있다. 감출 땐 프라이티브 누구에나 줄 땐 퍼블릭 자식에만 열어주려면 protected

9. void

10. 함수 정의, 호출, 선언

11. 멤버함수를 클래스 안에서 정의

첫번째 칸 : 클래스 이름, 두번째 칸 : 변수, 세번째 칸 : 함수 / -프라이벗 +퍼블릭

12.  Dog 클래스 다이어그램

13. 범위 지정 연산자(scope resolution operator) '::'

후속 변수 앞에 전역변수

14. using과 namespace

15. namespace

//aa.h
namespace AA
{
	int add(int x, int y)
	{
		return x + y;
	}
}

//bb.h
namespace BB
{
	int add(int x, int y)
	{
		return x + y + 1;
	}
}

#include <iostream>
#include "aa.h"
#include "bb.h"
int add(int x, int y) { return x + y + 2; }
int main()
{
	std::cout << AA::add(1, 2) << std::endl;
	std::cout << BB::add(1, 2) << std::endl;
	std::cout << ::add(1, 2);//전역 namespace
	return 0;
}

16. 자동 inline 함수

클래스 내부에 만들게되면 자동으로 인라인함수가 된다. 속도가 빠르다

17. 정수(Integer) 클래스

18. Dog 클래스 수정

//수정 후
#include <iostream>
using std::cout;
class Dog {
private:
	int age;
public:
	int getAge()
	{
		return age;
	}
	void setAge(int a)
	{
		age = a;
	}
};

int main()
{
	Dog happy;            // Dog class의 happy객체 정의
	happy.setAge(3);          // ② age는 private멤버로 클래스 밖에서 접근 불가
	cout << happy.getAge();     // ③ age는 전용멤버로 접근 불가
	return 0;
}

 

 

C++ 강의 자료 참고했습니다.