가상함수

Linux/C++ 2013. 12. 4. 10:49

가상함수라는것이 어떻게 쓰일 수 있는지를 생각해보자. 객체지향 구조에서 클래스의 상속 기능을 이용할 때 이 가상 함수가 많이 사용될 수 있다. 


일반적으로 가상함수는 함수를 선언할 때 제일 앞쪽에 virtual 키워드를 붙여서 선언할 수 있다. 그리고 이함수는 부모객체의 포인터로 자식개체의 함수를 불러올 수 있게 해준다. 보통의 멤버함수는 자식 클래스에서 오버라이딩을 하더라도 부모 객체의 포인터에서 호출하면 부모클래스의 함수가 호출된다. 하지만 가상함수를 쓰게 되면 자식클래스의 함수가 호출이 된다는 것이다. 사실 이렇게만 말하면 무슨 말인지는 잘 모르겠다. 예를 보면 확실히 이해를 할 수 있을 것이다. 

#include <iostream>
using namespace std;

class B
{
public :
  virtual foo(int a)
  {
    cout << "B inside int " << a << endl;
  }
  virtual foo(double a)
  {
    cout << "B inside double " << a << endl;
  }
};

class D : public B
{
public:
  foo(int a// B 에서 오버라이딩한 함수 
  {
    cout << "D inside int " << a << endl;
  }
};

int main(int argc, char **argv)
{
  D d;
  B b, *pb = &d;
  
  b.foo(9);  // B inside int 9
  b.foo(9.5);  // B inside double 9.5
  
  d.foo(9);  // D inside int 9
  d.foo(9.5);  // D inside int 9
  
  pb->foo(9);  // D inside int 9
  pb->foo(9.5)// B inside double 9.5
  
  return 0;
}  


자, 이 예시의 주석만 보더라도 위에서 이야기 했던것이 다 이해가 갈 것이다. 클래스 B가 부모 클래스이고 C는 B에서 상속을 받은 자식 클래스이다. 그리고 B는 객체를 두개 만들었는데 일반 객체 b와 포인터 객체 pb를 선언했고 pb는 D의 객체인 d의 주소값을 받아온다. 이럴 경우에 d, b는 함수를 실행시키면 각각 D,B자체에 선언된 함수가 실행이 된다.(d의 경우 int로 받는 foo(int a) 밖에 없지만 9.5가 들어갈 경우 알아서 int로 형변환이 된다. 그리고 pb는 int값이 들어갈 경우 D(자식)함수가, double값이 들어갈 경우 B의 함수가 실행이 된다. 객체하나로 필요한 D, B의 함수를 다 실행 시킬 수 있다. 만약 virtual로 선언 되지 않았다면 어떻게 될까? 위에 말한대로 B의 함수만 실행 될 것이다.(확실하지는 않다. 안해봤기 때문에..)


추가) 순수 가상함수라는것이 있다. 이것은 함수의 원형만 있고 구현은 없는 가상함수를 이야기 하는 것이다. 
virtual int myclassfunc(int a, int b) = 0
이와 같은 형식으로 함수 원형에 0을 대입시켜서 만들 수 있다. 
이와 같은 순수가상함수를 가진 클래스를 추상클래스라고 하고 추상클래스는 순수가상함수 때문에 객체를 만들 수 없다. 단순히 껍데기 역활은 하는듯 하다. 


[아침 햇발] 앵글로색슨과 일본 / 김의겸

Everyday 2013. 12. 4. 10:41


저명한 사회학자 찰스 틸리는 “국가는 가장 강력한 조직적 폭력집단”이라고 했다. 이 말을 약간 비틀어 국가 대신 민족이나 인종이란 단어를 집어넣으면 의미가 확장된다. 인류 역사 최강의 폭력집단은 단연 앵글로색슨족이다. 애초 독일 북서부에 살던 종족이었으나, 영국에서 켈트족들 사이에 내전이 일어나자 용병으로 불려가게 됐다. 그런데 자신을 고용한 켈트족들을 웨일스, 스코틀랜드 등 궁벽한 곳으로 쫓아내더니 나중에는 섬 전체를 먹어버린다. 이후 북미, 오스트레일리아(호주), 뉴질랜드 등으로 건너가 원주민을 학살하며 영역을 무한 확장해 나갔다.

‘가문의 영광’을 지키려는 앵글로색슨의 끈끈함은 유별나다. 스노든의 폭로로 뒤늦게 드러났지만, 2차 대전 이후 앵글로색슨 국가들은 ‘5개의 눈’이라는 무시무시한 동맹체를 결성해 전세계를 감시해왔다. 브래드 핏이 나오는 영화 <가을의 전설>을 봐도 그렇다. 영국이 독일과 전쟁을 벌이자, 영국과 독립전쟁을 치른 미국인데도 아들 삼형제가 모두 참전하고 막내는 죽기까지 하는 장면이 나온다. 그러니 앵글로색슨에 두 번 도전했다가 두 번 다 묵사발이 난 게르만인들이 도청 문제로 “앵글로색슨에 포위된 독일 안보가 위태롭다”고 외치는 건 너무나 당연하다.

아시아의 싸움꾼은 단연 일본의 야마토 민족이다. 도요토미 히데요시는 임진왜란 때 천하 제패 계획을 밝히는데, 그 배포와 야망이 대단하다. “명나라의 수도 베이징에 천황을 옮겨 수도로 삼고, 나는 상하이 근처 닝보에 살며 천하를 다스리고, 전쟁의 선봉에 선 다이묘들에게는 인도를 나눠주겠다.” 정화가 동아프리카까지 가는 항로를 개척했는데도 안으로 움츠러든 중국이나, 아예 동방예의지국을 자처한 우리 민족과는 기질이 다르다. 하지만 야마토족이 야욕을 채우기 위해서는 앵글로색슨족의 도움을 기다려야 했다.

몇 해 전 미국 스미스소니언 박물관에서 일본의 전함 발전사를 관람한 적이 있다. 10년마다 전함의 덩치를 2배로 키우더니 끝내는 세계 최대급 전함인 야마토 전함을 만들어낸 가공할 속도를 보고 입이 벌어졌다. 그런데 그게 다 영국이 기술 가르쳐주고 돈 대준 덕이었다. 청일전쟁 때도 끼어들려는 러시아를 영국이 막아줬기에 일본이 맘 놓고 중국을 두들겨 팰 수 있었다. 결정적인 건 러일전쟁 때였다. 영국은 러시아의 발트함대가 쉴 수 있는 항구와 연료인 석탄을 철저히 차단해버렸다. 발트함대가 어쩔 수 없이 220일간 지구 둘레의 4분의 3을 돌아 쓰시마 앞바다까지 왔을 때는 싸워볼 기력조차 없는 상태였다. 게다가 러일전쟁에서 일본이 사용한 전비의 44%는 영국과 미국이 조달해줬다. 미국은 가쓰라-태프트 밀약으로 러일전쟁에 이긴 일본이 조선을 차지하는 걸 앞장서서 인정해주었다. 그 뒤 일본은 자신의 ‘보스’가 누구인지를 망각하고 ‘영미귀축’에 대들었다가 원폭 두 방에 무너지고 말았다.

일본이 분명 배신을 때렸는데, 앵글로색슨족은 여전히 일본을 ‘넘버 투’로 총애했다. 아시아에서 소련이나 중국과 맞짱 뜰 만한 실력은 일본밖에 없다고 판단했기 때문일 것이다. 그런 일본이 100여년 만에 다시 앵글로색슨과의 2차 동맹 구축에 나섰다. 내건 깃발은 집단자위권이다. 미국이 가장 먼저 공개적으로 승인해줬고, 두번째, 세번째 승인국 역시 앵글로색슨 국가인 영국, 호주다. 세월이 흘렀지만 변한 건 없는 셈이다. 이번엔 중국마저 150년 동안 외세에 당했던 굴욕을 되갚아주겠다며 칼을 갈고 있다. 싸움판이 더 커져버렸다. 무능한 조선은 앓는 소리 한번 못하고 당했다. 과거 아픈 역사를 되풀이하지 않기 위해 말 그대로 민족의 지혜와 역량을 한데 모아야 할 때이다


출처: 한겨래

'Everyday' 카테고리의 다른 글

다이슨의 굴욕…삼성 특허침해 소송 자진 취하(종합)  (0) 2013.11.20
아 빡쳐  (0) 2013.10.12
아......... 누가 쫌 도와줘.......  (0) 2013.10.12
이상하네 아무리 봐도..........  (1) 2013.09.30
헛........  (0) 2013.05.19

다이슨의 굴욕…삼성 특허침해 소송 자진 취하(종합)

Everyday 2013. 11. 20. 20:09
경쟁사 흠집내기용 소송 비판
삼성전자 손해배상 청구 검토 등 역공 나서


[이데일리 박철근 기자]영국의 프리미엄 진공청소기 제조업체 다이슨이 삼성전자를 상대로 제기했던 특허침해 소송을 자진 취하했다.

삼성전자(005930)(1,470,000원 19,000 -1.28%)는 20일 “다이슨은 지난 11일(이하 현지시간) 삼성전자를 상대로 한 특허침해 소송을 더 진행하지 않겠다는 신청서를 제출, 영국 법원이 19일 다이슨의 신청을 승인했다”고 밝혔다.

다이슨은 지난 8월 말 삼성전자의 ‘모션싱크’ 청소기의 방향전환과 이동성을 강화한 실린더 청소기 바퀴 굴림 특허를 침해했다며 소송을 제기했다. 당시 엄영훈 삼성전자 생활가전사업부 부사장은 “모션싱크는 수년간 연구개발을 거쳐 만들어진 제품”이라며 “소송 내용을 검토한 뒤 법적으로 대응하겠다”고 말했었다.

이를 두고 가전업계에서는 삼성전자가 유럽 생활가전 시장에서 프리미엄 전략을 본격화하면서 삼성을 견제하기 위한 소송이라는 시각이 우세했다. 삼성전자는 지난 9월 초 영국 해롯백화점에 입점하면서 모션싱크의 유럽 판매를 본격화했고, 독일 베를린에서 열린 국제 가전전시회(IFA 213)에서 적극적인 마케팅·홍보를 펼치면서 관람객들로부터 많은 주목을 받았다.

특히 다이슨은 한국 특허청에도 관련 특허 신청을 했지만, 국내 특허 당국이 이를 거부하면서 다이슨 특허 기술에 관한 신뢰성이 떨어진다는 비판이 나오기도 했다.

다이슨이 소송 취하라는 결정을 내린 것은 삼성전자가 다이슨의 특허 침해 주장을 반박하는 선행 기술자료를 영국 법원에 제출하면서 다이슨이 승소 가능성이 낮다고 판단했기 때문으로 보인다.

아울러 제소 이후 정식 재판이 한 차례도 열리지 않은 상황에서 소송이 마무리되면서, 단순한 경쟁사 흠집내기식 소송이라는 비판도 제기될 것으로 예상된다. 

다이슨이 소송을 취하하면서 이번 특허공방은 사실상 삼성전자의 승리로 끝났지만, 이제는 삼성전자가 역공을 취할 것으로 예상된다.

삼성전자 관계자는 “모션싱크 청소기는 독자적인 연구개발을 통해 얻은 결과물”이라며 “다이슨이 소송은 취하했지만, 소송 준비 비용이나 브랜드 가치 훼손 등의 피해규모를 파악해 손해배상 청구 소송 등을 검토할 계획”이라고 말했다.


확실히 요즘엔 기업간의 특허전쟁이네....................

특허 많이 써야겠다

것도 좋은 특허

'Everyday' 카테고리의 다른 글

[아침 햇발] 앵글로색슨과 일본 / 김의겸  (0) 2013.12.04
아 빡쳐  (0) 2013.10.12
아......... 누가 쫌 도와줘.......  (0) 2013.10.12
이상하네 아무리 봐도..........  (1) 2013.09.30
헛........  (0) 2013.05.19