예) 출장을 나온 나는 사장님께 급히보고를 해야해서 회사에 전화를 걸었는데 비서가 전화를 받았습니다 나는 비서에게 사장님이 돌아오시면 제게 전화부탁드린다고 전해달라고 합니다 비서는 메모를 남기고 사장님이 저에게 전화를 겁니다 이 이야기는 내가 비서에게 했던 부탁을 영어로 Callback이라고 부르는데 이콜백은 프로그래밍에서도 사용됩니다 비서처럼 어떤일을 해줄 코드를두고 이코드가 실행할 세부 코드는 컴파일 시점이 아닌 실행 시점에 부여합니다 |
프로그래밍을 하다보면 값이 아닌 코드 자체를 매개 변수로 넘기고 싶으때가 많이 생깁니다 예를 들어 배열을 정렬하는 메소드를 만든다고 생각해보면 오름차순인지 내림차순인지 특별한 계산식을 거쳐서 나오는지 모릅니다 바로 이럴떄 델리게이트를 사용합니다 델리게이트는 메소드에 대한 참조이므로 비교 메소드를 참조할 데릴게이트를매개 변수로 받도록 정렬 메소드를 작성해놓으면 됩니다 |
delegate int Calate(int a, int b) //익명 메소드를 만들려면 델리게이트가 필요합니다 static void main(string[] args) { Calculate calc = (int a, int b) => a + b //두개의 int 매개 변수 a, b를 받아 이둘을 더해 반환하는 익명 메소드를 람다식으로 만들어져 있습니다 |
(매개_변수_목록) => { 문장1; 문장2; 문장3; ... } 문 형식의 람다식 예제 코드입니다 식형식의 람다식은 반환 형식이 없는 무명함수를 만들수는 없습니다 하지만 문 형식의 람다식을 이용하면 위 예제처럼 만들수 있습니다 |
다중상속의 문제점
#include <iostream> using namespace std; class A { protected: int a; public: A(int aa) { a = aa; } }; class B: public A { protected: int b; public: B(int aa, int ab) : A(aa) { b= ab; } }; class C: public A { protected: int c; public: C(int aa, int ac) :A(aa) { c=ac; } }; class D : public B, public C { protected: int d; public: D(int aa, int ab, int ac, int ad) : B(aa, ab), C(aa, ac) { d = ad; } void fd() { b=1; c=2; B:: a=3; //여기서 문제 발생 } }; int main() { D d(1,2,3,4); return 0; } |
#include <iostream> } |
'코스웨어 > 15년 스마트컨트롤러' 카테고리의 다른 글
20150618 4번 김민정 C#(str 연산자, Str 연산자, 다형성) (2) | 2015.06.19 |
---|---|
20150618 4번 김민정LINQ(groupby, join, LINQ를 사용한 성적처리 프로그램) (2) | 2015.06.19 |
20150617-3번-권오민 - LINQ / 가상함수(virtual)&연산자 오버로딩(+=, [ ], ->) (13) | 2015.06.17 |
2015.06.17 졸업생과의 만남 ^^ (16) | 2015.06.17 |
2015-06-11 32번 천정호 (5) | 2015.06.13 |
20150612 (바뀐 번호)31번 - 홍준모 - c# : 델리게이트의 기본 개념, windowform 활용 c++ : (4) | 2015.06.12 |
음햐햐 스킨 바꿨음 (3) | 2015.06.12 |
Car 클래스 수업자료 (1) | 2015.06.11 |