Programming/Java2014. 3. 10. 13:10
연산자 오버로딩 / 다중 상속을
cpp는  허용
자바는 허용하지 않는다.


다중상속의 경우 다중상속시 상속했던 클래스들을 모두 알아야 하기에 정보 은닉 및 캡슐화에 치명적이고
(결국 볼게 더 많아진 c 일뿐 유지 보수 측면에서)

연산자 오버로딩은 변형이 심하게 될 경우 파악해야할 부분이 많이 늘어나기에 가독성이 떨어져서 이래저래 빼버린듯 하다.
(극단적으로 클래스에 대한 operator[] 를 전혀 다르게 정의해서 사용한다면
배열로 사용할 수 없지만 해석하는 사람으로서는 혼동할 수 밖에 없다.)

'Programming > Java' 카테고리의 다른 글

java 명령어 줄 인수  (0) 2014.03.10
java break / continue  (0) 2014.03.10
java explicit upcasting 묵시적 형변환  (0) 2014.03.07
java byte 형의 오묘함  (0) 2014.03.07
java primitive data type + 연산자  (0) 2014.03.07
Posted by 구차니
Programming/C++ STL2014. 3. 10. 13:00
변수형
bool - true / false

함수 확장
class - class / friend / virtual / overriding
template - template / overloading

상속/객체
const 키워드 확장 (컴파일러 레벨에서의 함수내 값변경 방지)
static 키워드 확장 (java의 private?)

포인터 확장
this
& (reference) 

예외처리
try
catch
throw 


constructor (create triggered action) / destructor (remove triggered action) 를 통해 자동화를 지원
기존의 static 을 통한 파일 단위의 접근 제어에서 클래스 단위 접근 제어 확장
try-catch-throw를 통한 goto 문의 사형선언
overloading과 template을 통한 개발의 용의함(overloading을 통한 타입의 identifier화) 

이런게 c와 cpp을 구분짓는 가장 큰 요소인것 같다. 

'Programming > C++ STL' 카테고리의 다른 글

cpp 와 java의 차이점(문법)  (0) 2014.03.14
cpp 디폴트 매개변수  (0) 2014.03.12
오버로딩 / 오버라이딩  (0) 2014.03.10
try - throw - catch  (0) 2014.03.05
연산자 오버로딩  (0) 2014.03.04
Posted by 구차니
Programming/C++ STL2014. 3. 10. 12:49
오버로딩은 동일 이름의 함수에
인자의 갯수나 타입에 따라서 다르게 작동하도록
함수를 중첩/중복 시킨다.

over load + ing에 걸맞게
함수명 중복정의 이런식으로 했으면 좀 쉬웠으려나?

2013/03/04 - [Programming/C++ / STL] - c++ function overloading


그리고 오버라이딩은
상속관계에서 이전에 정의된 함수를 갈아 엎고
함수 이름과 인자가 동일하지만 작동을 전혀 다르게 할 경우 사용한다.

over ride + ing 을 함수 재정의 라고 하기도 한다.

일단.. overloading은 능동형이고 짐을 더 올려주는 느낌이라면
overriding은 피동형(올라타버림) 이고 주도권을 빼앗겨지는 느낌

load와 ride의 느낌이 비슷해서 였을까..
왜 예전에는 두개가 이렇게 헷갈렸을까 ㅠㅠ 

'Programming > C++ STL' 카테고리의 다른 글

cpp 디폴트 매개변수  (0) 2014.03.12
c -> cpp 추가사항  (0) 2014.03.10
try - throw - catch  (0) 2014.03.05
연산자 오버로딩  (0) 2014.03.04
c++ explicit  (0) 2014.02.28
Posted by 구차니
Programming/Java2014. 3. 7. 21:20
문득 c나 cpp에서도 그런진 모르겠지만..
(type binding을 지원하는 cpp는 되지 않을까?) 

일단 타입이 강하게 묶여있기 때문에
int 형으로 계산을 하고 나서 long 형으로 변환하는 건 이미 데이터가 손실 되어 의미가 없어진다.
무조건 계산 전에는 형 변환을 해주고 시작하는 것이 옳다(!).

그리고 두개의 크기가 다른 타입을 계산할 경우 자동으로 큰 쪽으로 맞추어지나
정수형은 int 형이 최고 타입으로 long 형으로는 자동적으로 크기가 키워지진 않는다.

System.out.println(1000000 * 1000000);
System.out.println(1000000 * (long)1000000);
System.out.println((long)1000000 * 1000000);
System.out.println((long)1000000 * (long)1000000);
System.out.println((long)(1000000 * 1000000));
System.out.println(1000000 * 1000000L);
System.out.println(1000000L * 1000000);
System.out.println(1000000L * 1000000L); 

-727379968
1000000000000
1000000000000
1000000000000
-727379968
1000000000000
1000000000000
1000000000000 

'Programming > Java' 카테고리의 다른 글

java break / continue  (0) 2014.03.10
java와 cpp의 차이점 - 연산자 오버로딩 / 다중상속  (0) 2014.03.10
java byte 형의 오묘함  (0) 2014.03.07
java primitive data type + 연산자  (0) 2014.03.07
java framework  (0) 2014.03.06
Posted by 구차니
Programming/Java2014. 3. 7. 21:13
1byte * 1byte를 해도 2byte가 한계임에도 불구하고 int 형으로 강제하는 것은
자바 컴파일러의 특성이나 언어적 정의 같은 느낌인데..

아무튼 a = 3; b = 4; 로 해도
값이 오버플로우 되지 않음에도 불구하고 강제로 int 형으로 하도록 한다.

short 형은 버림 받은 느낌이고...
public static void main(String[] args) {
// TODO Auto-generated method stub
byte a = 10;
byte b = 30;
byte c = (byte)(a * b);

System.out.println(c);
} 

(byte)를 빼면
 Type mismatch : cannot convert from int to byte
라고 에러(!)가 발생한다.

'Programming > Java' 카테고리의 다른 글

java와 cpp의 차이점 - 연산자 오버로딩 / 다중상속  (0) 2014.03.10
java explicit upcasting 묵시적 형변환  (0) 2014.03.07
java primitive data type + 연산자  (0) 2014.03.07
java framework  (0) 2014.03.06
java tutorial docs  (0) 2014.03.06
Posted by 구차니
Programming/Java2014. 3. 7. 16:38
long 형에 int형의 범위를 넘는 값을 입력할 경우 L을 붙여 주지 않으면 에러가 발생한다.
(The Literal 9223372036854775807 of type int is out of range)

실수는 d 식별자가 없으면 double형으로 인식한다.
float 형에만 강제로 f를 붙여 주어야 함.

Data TypeDefault Value (for fields)
byte 0
short 0
int 0
long 0L
float 0.0f
double 0.0d
char '\u0000'
String (or any object)   null
boolean false
[링크 : http://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html]

변수 크기
boolean - true/false 1bit
byte - 1byte
char - 2byte

short - 2byte
int - 4byte
long - 8byte

float - 4byte
double - 8byte

>>> unsigned bitwise shift right
c에서는 타입에 따라서 unsigned shift / signed shift를 사용하지만
자바는 기본적으로 signed이기에 unsigned shift가 별도로 연산자 제공이 된다.
[링크 : http://docs.oracle.com/javase/tutorial/java/nutsandbolts/operators.html]

JVM 32bit/ 64bit 상관없이 long은 64bit
[링크 : http://stackoverflow.com/questions/9511836/size-of-java-primitives-on-32-64-bit-jvm]

JAVA 8 부터 unsigned int 지원예정
[링크 : http://stackoverflow.com/questions/9854166/declaring-an-unsigned-int-in-java]
[링크 : https://blogs.oracle.com/darcy/entry/unsigned_api]

'Programming > Java' 카테고리의 다른 글

java explicit upcasting 묵시적 형변환  (0) 2014.03.07
java byte 형의 오묘함  (0) 2014.03.07
java framework  (0) 2014.03.06
java tutorial docs  (0) 2014.03.06
java sdk 설치경로  (0) 2012.03.18
Posted by 구차니
Programming/Java2014. 3. 6. 18:06

'Programming > Java' 카테고리의 다른 글

java byte 형의 오묘함  (0) 2014.03.07
java primitive data type + 연산자  (0) 2014.03.07
java tutorial docs  (0) 2014.03.06
java sdk 설치경로  (0) 2012.03.18
java arraylist에서 중복항목 제거하기  (2) 2012.02.16
Posted by 구차니
Programming/Java2014. 3. 6. 15:10
epub 로도 제공하는데 일단 다운받아서 아이리버 스토리에 넣어보니
Updated for Java SE 7 이라고 나온다. 오오오!!!

docs.sun.com/java 가 아니라 docs.oracle.com/javase 라니 먼가 미묘한 기분... ㅠㅠ

[링크 : http://docs.oracle.com/javase/tutorial/]
    [링크 : http://www.oracle.com/technetwork/java/javase/java-tutorial-downloads-2005894.html

'Programming > Java' 카테고리의 다른 글

java primitive data type + 연산자  (0) 2014.03.07
java framework  (0) 2014.03.06
java sdk 설치경로  (0) 2012.03.18
java arraylist에서 중복항목 제거하기  (2) 2012.02.16
java xml dom 파싱  (0) 2012.02.06
Posted by 구차니
Programming/openGL2014. 3. 6. 15:03
조만간 쓸일이 있을 예정?


[링크 : http://www.geuz.org/gl2ps/]

'Programming > openGL' 카테고리의 다른 글

glColor*  (0) 2015.07.20
우분투에서 openGL 시작하기  (0) 2015.07.20
openGL state variables  (0) 2013.12.12
openGL에서 AVI 동영상 재생하기  (0) 2013.04.09
openGL gcc에서 컴파일 하기  (0) 2012.06.02
Posted by 구차니
Programming/C++ STL2014. 3. 5. 22:49
java와 같은 그런 정교한 예외처리는 아닌거 같아서 조금 실망
물론..cpp가 java보다 거의 20년 전 꺼라는걸 감안하면...

아무튼.. try{} 안에 문제점이 될 부분에서
문제점에 대한 if문을 하고 throw를 통해 (물론 타입별로 catch 문을 중첩가능함) 제어의 흐름을 통일 시킨다.
과거에는 수 많은 return문으로 구현하거나
에러발생시 끝부분으로 goto 하는걸 문법적으로 깔끔하게 구현한 셈

#include < iostream >
using namespace std;
int main(int argc, char **argv)
{
		int a = 12;
		int b = 1;
		double c = 0;

		try
		{
			if(b == 0) throw(b);
			else throw(c);
		}
		catch(int e)
		{
			cout << "divide by zero. throw " << e << endl;
		}
		catch(double e)
		{
			cout << "good job. throw " << e << endl;
		}

        return 0;
}

스탠다드 라이브러리로 존재한다.
#include <exception>
[링크 : http://www.cplusplus.com/reference/exception/exception/ ] 

'Programming > C++ STL' 카테고리의 다른 글

c -> cpp 추가사항  (0) 2014.03.10
오버로딩 / 오버라이딩  (0) 2014.03.10
연산자 오버로딩  (0) 2014.03.04
c++ explicit  (0) 2014.02.28
c++ class / const member variable & function  (0) 2014.02.28
Posted by 구차니