[ C++ ] C, C#, JAVA의 문법 차이점
by 월루글의 목적
글쓴이가 C, C++, C#, JAVA, Python 등 여러 언어를 접하면서 서로 사용할 때마다 언어별 차이점 때문에 너무 헷갈리는 게 많아 이렇게 정리함.
C++의 차이점
1. foreach 지원 ( C 없음, 라이브러리 사용 시 지원 가능 )
int main() {
int arr[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
for(int num : arr)
std::cout << num << std::endl;
}
1
2
...
9
10
2. 편리한 변수 초기화 ( C, JAVA, C# 지원안함 )
int main() {
int a(10);
float b(20.34);
std::cout << a << '\t' << b << endl;
}
10 20.34
3. OOP 지원 및 생성자 위임 ( OOP : C 지원안함, 생성자 위임 : JAVA, C# 지원안함 )
class MyClass {
private:
int a;
int b;
public:
MyClass(int a, int b) : a(a), b(b) { } // 생성자 및 변수선언 위임
int getA() { return a; }
int getB() { return b; }
}
4. 정적 맴버변수 초기화 불가능 및 초기화 방법 ( JAVA, C#는 초기화 가능 )
class MyClass {
public:
static int a = 0; // 초기화 에러 발생]
static int a; // 문제없음
}
int MyClass::a = 10; // 초기화 방법
5. 네임스페이스, 정적 변수, 정적 메서드 호출 시 '::' 키워드로 접근 ( JAVA, C#은 '.' 키워드 사용 )
class MyClass {
public:
static int a;
static void test(int a) { return a; }
}
int MyClass::a = 10; // static 변수 접근시 :: 키워드 사용
int main() {
MyClass::test(20); // static 메서드 접근시 :: 키워드 사용
std::cout << "Hello World!!" << std::endl; // namespace 접근시 :: 키워드 사용, using namespace std; 선언으로 std 생략가능
}
6. 상수형 매개변수, 상수명 메서드 ( C, JAVA, C# 지원 안 함, JAVA의 경우 제네릭의 상한제한과 하한제한을 사용하여 구현 가능 )
void test(const int a, int b) {
a = 20; // 에러발생
b = 10; // 문제없음
}
void test2(const int a, int b) const {
a = 20; // 에러발생
b = 10; // 에러발생
}
7. 추가예정...
마치며...
제가 글을 쓰는 가장 큰 이유는 배운 내용을 정리하고 나중에 다시 공부하기 위해서입니다, 따라서 잘못된 정보가 포함되어 있거나 중요한 내용이 빠져 있을 수 있습니다, 잘못된 내용이나 빠진 내용이 있는 경우 댓글로 말씀해주시면 정말 감사드리겠습니다!
'프로그래밍 > C++' 카테고리의 다른 글
[ C언어 ] 포인터 연산을 활용하여 원하는 메모리 접근 (0) | 2021.05.04 |
---|
블로그의 정보
남쪽의 외딴섬
월루