++(++a)질문
객체지향 상속
-> 속성 상속받고 자신의 특성 추가
*업캐스팅 -->포인터 형변환
pc
char형 포인터는 1 byte에 대해 작업
100->101->102
만약 int형 포인터로 작업하면 4byte씩 수정
char 형 포인터 for문-->1byte씩 4번
같은 memory내용에 대해 포인터의형에따라 메모리 읽는바이트가달라
*(pc+0)
*(pc+1)
메모리는 허랅받았으면
동적할당등ㅇ로
포인터의 자료형에 따라
어떤 포인터로 메모리에 접근하는지가 중요해
int data=0x
char * pc;
pc=(char*)& data;
합법적으로 쓰지 못하는 3byte공간마저 쓰려고 하면 에러가 생긴다
-->
segementation fault-->ptr잘못써서
char a='A';
int& pi=(int* )&a;
//다운캐스팅인가 이게
pBase->showColorPoint()에러나는 이유 생각하기
pBase는 Point형인데 CirclePoint형의 메소드에 접근하려고 시도했기 떄문이다
q
다운캐스팅 부 모->자식 (더 커지는꼴) pDer->마지막줄? 안되는이유인가 한후에
->업캐스팅과 달리 명시해야 한다
전반부
Point클래스의 변수들 접근제어자 private이었는데 protected로 바꿈
#include
#include
using namespace std;
class Point{
int x,y;
public:
void set(int x,int y){
this->x=x;
this->y=y;
}
void showPoint(){
cout<<"("<<x<<","<<y<<")"<<endl;
}
}
class ColorPoint:public Point {
//oop개념 안쓴다면 x y showPoint 등 다 추가해야해
string color;
public:
void setColor(string col){
this->color=col;
}
void showColorPoint(){
cout<<color<<":"<<endl;
showPoint();
}
}
//같은 메ㄹㅁ
int main(){
ColorPoint cp;
//부모 클래스의 메소드 호출
ColorPoint* pDer=(Point*)&cp;
//upcastijg은 명식적 표시 안해도 ㄱㅊ
Point* pBase=pDer;
pDer->set(3,4);
pBase->showPoint();
//어느지점으로 가는지메모리상에 표시하기 위함
ColorPoint* pDer=(ColorPoint*)pBase;
pDer->setColor("red");
pDer->showColorPoint();
/*
cp.set(3,4);
cp.setColor("Red");
cp.showColorPoint();
*/
}
pg 18
예제 8-2
p.x p.y왜 주석처리 하신 거지
어떻게 고치라고 엄밀히 하려면
부모 클래스의생성자와 자식클래스의 생성자가 모두실행되는가
자식클래스의 생성자만 호출될것인가 부모
답:둘다 호출된다;
부모생성자가 먼저 불린다
pg 20잘보기
그림 8-14
컴파일러 가 자동으로 기본 생성자 안만들어줘
'c++공부' 카테고리의 다른 글
1205 core요약 1교시 (0) | 2019.12.05 |
---|---|
10 31 수업내용 정리 (0) | 2019.10.31 |