C++ 에서 구조체는..
글쓴이: 맹고이 / 작성시간: 화, 2003/02/18 - 9:13오후
C++를 배우고 있는 초보입니다..
구조체를 만들어보다가 테스트를 해봤는데요..
멤버함수도 만들어지고.. 생성자도 만들어지네요-_-a
그럼 C++에서 구조체랑 클래스는 차이가 없는건가요?
제가 생각하기에..
구조체는 기본적으로 access specifier(책이 영어라..-_-;; )가 public이고
클래스는 private인게 차이인듯..-_-a
뒤부분의 내용은 아직 안배워서 여기까지밖에 생각못하겠네요..
C++에서 구조체랑 클래스의 차이점을 가르쳐주세요..
Forums:
음..현재 제가 공부한데까지 봤을때..차이점은<구조체>
음..현재 제가 공부한데까지 봤을때..차이점은
<구조체> 단지 데이터 타입 -_-;;
<클래스> 함수 + 데이터
차이점은 클래스에 있는 상속과 멤버변수&함수 보호(private)..아직 이것밖에 모르겠군요..헤헷^^
음...요즘들어 클래스로만 돌아가는 플그래밍이 가능하다는 것을 느끼는 중입니다..-_-
===================================================
중요한건 얼마나 아느냐가 아니라 그것에 대한 열정이다.
둘의 차이는 기본 값이 접근 기술자(?)의 디폴트값 차이 외에는 없습니다
둘의 차이는 기본 값이 접근 기술자(?)의 디폴트값 차이 외에는 없습니다.
굳이 따지자면... naming decoration(mangling)의 차이나는 것 외에는 없겠지요..
---
http://coolengineer.com
좀 이해하기 쉽게 풀자면.
구조체는 데이터만 담는것.
클래스는 데이터와 이 데이터를 헨들링하는 메소드를 같이 담는것.
그런데...
클레스중에 접근 메소드를 빼고 모든 데이터를 퍼블릭으로 설정해노으면
구조체와 같아지네요.
구조체의 확장형이 클래스라고 보시면 무리 없을겁니다.
Do you think that's the air you are breathing now?
class/struct 안에 method를 선언할 때, 그것은 class
class/struct 안에 method를 선언할 때, 그것은 class안에 위치하는 것처럼 느껴지지만,
사실 그렇게 생각하시면, class의 크기에 영향을 주는 것 같은 느낌이 들지요.
사실 class/struct 안에 선언된다는 것은, 기본적으로는 함수의 scope를 그 class안에 둔다고 생각하시면 됩니다. 따라서, 변수 선언과 함수 선언은 크기에 영향을 주는 면에서는 "담는다"라는 말을 사용하는 것은 사실 어색합니다.
virtual function 을 사용했을 때, 증가되는 사이즈도 사실 function이 그 안에 들어가기 때문이 아닙니다. virtual function을 관리하기 위한 table pointer가 추가 되는 것이지요.
---
http://coolengineer.com
음..
구조체에도 함수+데이터로 구성이 가능하길래 질문을 드렸습니다만..
접근자(?)변경도 가능하고..
아직 해보진 않았지만..구조체도 상속이 될것같은데..
집에가면 해봐야겠습니다..-_-
C++의 struct는 C의 그것의 기본 성질을 물려받은 객체입니다.
C++의 struct는 C의 그것의 기본 성질을 물려받은 객체입니다.
C의 struct의 데이타멤버들은 -C++의 용어로 말하자면-퍼블릭한 속성을 가지고 있습니다. 그래서 C++에서는 C의 struct의 속성을 기본적으로 받아서 데이타멤버들의 기본 속성이 퍼블릭이며 그것은 객체를 표한합니다. 즉 데이타멤버와 멤버함수를 가지는 객체를 말합니다. 엄연히 C의 struct와 다르지만, 한편으로는 비슷합니다. 오히려 Class와 기본 속성만 다를뿐, 다른 이름의 같은 의미라고 생각하면 됩니다.
내 블로그: http://unipro.tistory.com
C++에서는....
사실...C++에와서 이개념은..많이 달리집니다.
다른거는 딱! 하나 밖에 없습니다.
상속시 접근 제한자 private,protected 을 클래스에서는 쓸수있고...구조체는 모두 public입니다.
매소드? 구조체도 가질수 있습니다.
그럼 인터페이싱은 어떻게 하죠?
C++에서 struct를 가지고 인터페이싱도 되는지요?
그게 되면 C에서도 된다는 소리 아닌가요?
그게 된다면 간단한 셈플 코드좀 보여주세요.
interfacing이라는게 pure virutual class를 말하는
interfacing이라는게 pure virutual class를 말하는 것인가요?
C++이 struct 를 쓰지만, 사실은 class 라고 생각하시면 되구요,
C에서는 그 안에 함수조차 선언이 되지 않습니다.
함수 포인터를 갖는 변수면 몰라도....
C의 struct 는 단지 변수의 집합일 뿐, scope 개념도, this pointer의 개념도 없는 단순한 변수 집합체일 뿐입니다.
샘플.. 당근 없지요.... ^^
---
http://coolengineer.com
나름대로의 결론;;
C 컴파일러랑 C++컴파일러랑 달라서..
이름만 같은 struct이지 다른것 같네요..(그냥 제 생각-_-)
인터페이싱은.. 먼지 모릅니다-_-a
그리고..
C++에서 struct랑 class는 거의 같지만 개념적으로 달라서
사용하는 방식이나 용도에서 차이가 난다고..
전 이렇게 머리속에 정리하기로 했습니다-_-a
...맞을까요?
큰차이점은... 아무래도..
여러가지 C와 plus plus간의 차이점들을 말씀해주셨지만.... 그래도 가장 큰 차이점은 바로 객체 지향이라는 겁니다... C++ 애서는 데이터를 위주로 모든것이 데이터에 관련되어 촛점이 맞추어 졌지요... C에서는 걍 흐름 이죠.. 그래서 데이터를 다루는데... 는 별 차이가 없을지 몰라도 개선사항이 발생하거나 했을때에는 머리가 상당히 아파지는 겁니다... 한번 프로그램을 짜고 끝낸다면 아무것으로 해도 상관이 없습니다.. 하지만 프로그램이라는게 어디 그렇습니까...?
변동사항이 무지하게 발생하죠... 그때 마다... 적절하게 대처해야 합니다..
결국 데이터를 가공해서 출력하는게 프로그램인데... C같은 경우 손을 많이 보거나.. 아님 전체를 다시 설계해야 하는 사태가 종종 발생합니다... 여기에 따르는 시간 경비 노력... 말 안해두 알죠?
댓글 달기