C++에서 class
와 struct
의 차이점은 기본적으로 접근성이다.
class
멤버 변수와 함수는 기본적으로 private
이다.
struct
멤버 변수와 함수는 기본적으로 public
이다.
아래 예시를 보자.
#include <iostream>
class A {
int a;
};
struct B {
int a;
};
int main() {
A test1;
B test2;
test1.a = 1;
test2.a = 2;
std::cout << "a : " << test1.a << std::endl;
std::cout << "b : " << test2.a << std::endl;
return 0;
}
에러가 발생하는 것을 볼 수 있다. 따라서, 위 코드에서 A
클래스의 int a
변수는 private
접근 제어자로 선언되어 있어, main
함수에서 test1.a = 1
으로 값을 할당할 수 없다. 반면, B
구조체의 int a
변수는 public
접근 제어자로 선언되어 있어, main
함수에서 test2.a = 2
로 값을 할당할 수 있다.
class
에 public:
선언을 하면 에러가 사라진다.
#include <iostream>
class A {
public:
int a;
};
struct B {
int a;
};
int main() {
A test1;
B test2;
test1.a = 1;
test2.a = 2;
std::cout << "a : " << test1.a << std::endl;
std::cout << "b : " << test2.a << std::endl;
return 0;
}