중복 멤버의 처리 조 병 규 한 국 교 통 대 학 교 SQ Lab..

Slides:



Advertisements
Similar presentations
3. 메소드와 변수 SCJP 자격증 프로젝트 발표자 : 최선웅. 1. 메 소 드 개 념 2. 메 소 드 양 식 3. 메 소 드 변 수 4. 메 소 드 예 제 5. 참 고 문 헌 / 자 료 목 차.
Advertisements

7 장 프렌드와 연산자 중복 1 명품 C++. 친구란 ? 2 우리 집 냉장고 내 침대 우리 집 TV 우리 집 식탁 친구 친구 ? 내 가족의 일원은 아니지만 내 가족과 동일한 권한을 가진 일원으로 인정받은 사람.
1. 2 차원 배열  배열은 동일한 데이터 유형으로 여러 개의 변수를 사용할 경우 같은 이 름으로 지정하여 간편하게 사용할 수 있도록 하는 것으로서 앞에서 1 차원 배열을 공부하였습니다.  2 차원 배열은 바둑판을 생각하면 되며, 1 차원 배열에서 사용하는 첨자를 2.
제2장 C 언어의 확장 C++(1).
어서와 Java는 처음이지! 제20장 실전프로젝트 #2.
5. 접근 제한자의 이해 SCJP 자격증 프로젝트 발표자 : 노효진.
01_ 가상 함수를 사용한 다형성의 구현 02_ 오버라이딩
명품 C++ 프로그래밍 3장. 클래스와 객체.
ㅎㅎ 구조체 구조체 사용하기 함수 매개변수로서의 구조체 구조체 포인터와 레퍼런스 구조체 배열.
ㅎㅎ 구조체 C++ 프로그래밍 기초 : 객체지향의 시작 구조체 사용하기 함수 매개변수로서의 구조체 구조체 포인터와 레퍼런스
명품 C++ 8장 상속.
ㅎㅎ C++ 프로그래밍의 첫 걸음 C++로 프로그래밍한다는 것의 의미 세상에서 가장 간단한 C++ 프로그램
C++ Espresso 제1장 기초 사항.
Chap07 상속 Section 1 : 상속의 개요 Section 2 : 멤버 변수의 상속
최윤정 Java 프로그래밍 클래스 상속 최윤정
명품 C++ 6장 함수 중복과 static 멤버.
8. 객체와 클래스 (기본).
제12장 다형성과 가상함수 다형성의 개념을 이해한다. 상향 형변환의 개념을 이해한다. 가상 함수의 개념을 이해한다.
C++ Espresso 제9장 다형성.
조 병 규 Software Quality Lab. 한국교통대학교
명품 C++ 8장 상속.
명품 C++ 9장 가상 함수와 추상 클래스.
제 6장. 생성자와 소멸자 학기 프로그래밍언어및실습 (C++).
8.1 인터페이스 개요와 인터페이스 정의 8.2 인터페이스의 사용 8.3 인터페이스의 상속 8.4 인터페이스 참조
8장. 원격지 시스템 관리하기.
명품 C++ 7장 프렌드와 연산자 중복.
1. C++ 시작하기.
SqlParameter 클래스 선문 비트 18기 발표자 : 박성한.
정적 멤버 변수/정적 멤버 함수 - friend 함수/클래스 template
C++ Espresso 제12장 템플릿.
자바 5.0 프로그래밍.
제4장 클래스와 객체 객체 지향 기법을 이해한다. 클래스를 작성할 수 있다. 클래스에서 객체를 생성할 수 있다.
명품 C++ 8장 상속.
스택(Stack) 김진수
14. 예외처리.
[INA470] Java Programming Youn-Hee Han
13. 연산자 오버로딩.
제14장 예외처리와 템플릿 예외 처리의 개요를 학습한다. 예외 처리를 적용할 수 있다. 템플릿의 개념을 이해한다.
7장 인터페이스와 추상 클래스.
제5장 생성자와 접근제어 객체 지향 기법을 이해한다. 클래스를 작성할 수 있다. 클래스에서 객체를 생성할 수 있다.
명품 C++ 9장 가상 함수와 추상 클래스.
가상함수와 추상 클래스.
Chapter6 : JVM과 메모리 6.1 JVM의 구조와 메모리 모델 6.2 프로그램 실행과 메모리 6.3 객체생성과 메모리
Lab 8 Guide: 멀티스레딩 예제 2 * Critical Section을 이용한 멀티스레딩 동기화 (교재 15장, 쪽)
자바 5.0 프로그래밍.
Power Java 제11장 상속.
제8장 포인터와 동적객체 생성 포인터의 개념을 이해한다. 포인터와 관련된 연산을 이해한다.
조 병 규 Software Quality Lab. 한 국 교 통 대 학 교
12. 상속 : 고급.
객체기반 SW설계 팀활동지 4.
18강. 인터페이스 – II - 인터페이스와 다중상속 - 인터페이스를 통한 로봇 장남감 만들기 프로그래밍
조 병 규 Software Quality Lab. 한 국 교 통 대 학 교
STS 에서 웹 서버 설치 방법.
Chapter 13. 템플릿(Template) 1
포인터와 배열 조 병 규 한 국 교 통 대 학 교 SQ Lab..
처음으로 배우는 C 프로그래밍 제6부 C++의 소개 제 14 장 추가적인 클래스 기능.
Chapter 2 C++ 함수와 네임스페이스. 최호성.
클래스 : 기능 CHAPTER 7 Section 1 생성자(Constructor)
제 8장. 클래스의 활용 학기 프로그래밍언어및실습 (C++).
3. 모듈 (5장. 모듈).
서브클래스 조 병 규 한 국 교 통 대 학 교 SQ Lab..
Static과 const 선언 조 병 규 한 국 교 통 대 학 교 SQ Lab..
실습 UBLAB.
2.가상머신의 탐험 도구, Oolong에 대하여 ps lab 김윤경.
실습과제 1번 /* 1. 멤버 변수로 반경 radius를 갖고, 그 값을 모니터에 출력하는
제 29 강 스트링(string) 다루기 s a i s . s T i h t g r i n.
윤성우의 열혈 C++ 프로그래밍 윤성우 저 열혈강의 C++ 프로그래밍 개정판 Chapter 07. 상속의 이해.
29장. 템플릿과 STL 01_ 템플릿 02_ STL.
상속 (Inheritance) private 전용부분 전용부분 공용부분 공용부분 public 기본 클래스
7 생성자 함수.
Presentation transcript:

중복 멤버의 처리 조 병 규 한 국 교 통 대 학 교 SQ Lab.

멤버의 중복 원인과 처리 className::memberName 부모 클래스로부터 상속이 됨으로써 자식 클래스 내에 동일한 이름의 멤버가 두 개 이상 존재할 수 있음 - 중복된 멤버를 구분하는 방법은 자식 클래스의 고유 멤버는 그대로 사용하고 부모 클래스로부터 상속된 멤버에 대하여는 부모 클래스 이름을 기술하고 ::을 한 다음 멤버 이름을 기술하함 className::memberName SQ Lab.

(예) 중복 멤버의 처리 : 다계층 상속 /*001*/ // overloadingMember01cNcpp /*002*/ /*003*/ #include "iostream" /*004*/ using namespace std; /*005*/ class classG /*006*/ { /*007*/ protected : int y; /*008*/ public : int z; /*009*/ }; /*010*/ class classP : public classG /*011*/ { /*012*/ protected : int y; /*013*/ public : int z; /*014*/ }; /*015*/ class classC : public classP /*016*/ { /*017*/ private : int x; /*018*/ protected : int y; SQ Lab.

/*030*/ void adder(int cp=0, int pp=0, int gp=0) /*031*/ { /*019*/ public : int z; /*020*/ classC() /*021*/ { /*022*/ x = 1; /*023*/ y = 2; /*024*/ z = 3; /*025*/ classP::y = 4; /*026*/ classP::z = 5; /*027*/ classG::y = 6; /*028*/ classG::z = 7; /*029*/ } /*030*/ void adder(int cp=0, int pp=0, int gp=0) /*031*/ { /*032*/ x = x + cp; /*033*/ y = y + cp; /*034*/ z = z + cp; /*035*/ classP::y = classP::y + pp; /*036*/ classP::z = classP::z + pp; /*037*/ classG::y = classG::y + gp; /*038*/ classG::z = classG::z + gp; /*039*/ }; SQ Lab.

/*040*/ void coutMemberData() /*041*/ { /*041*/ { /*042*/ cout << "\n x=>" << x /*043*/ << "\n y=>" << y /*044*/ << "\n z=>" << z; /*045*/ cout << "\n\n classP::y=>" << classP::y /*046*/ << "\n classP::z=>" << classP::z; /*047*/ cout << "\n\n classG::y==>" << classG::y /*048*/ << "\n classG::z==>" << classG::z; /*049*/ } /*050*/ }; /*051*/ /*052*/ void main() /*053*/ { /*054*/ classC Cobject; /*055*/ /*056*/ Cobject.adder(10, 20, 30); /*057*/ Cobject.coutMemberData(); /*058*/ cout << "\n\n----------------------------\n"; /*059*/ SQ Lab.

/*061*/ Cobject.classP::z = 88; /*062*/ Cobject.classG::z = 99; /*060*/ Cobject.z = 77; /*061*/ Cobject.classP::z = 88; /*062*/ Cobject.classG::z = 99; /*063*/ cout << "\n Cobject.z=>" << Cobject.z; /*064*/ cout << "\n Cobject.classP::z=>" << Cobject.classP::z; /*065*/ cout << "\n Cobject.classG::z=>" << Cobject.classG::z; /*066*/ /*067*/ cout << "\n\n\n Type any character : "; /*068*/ cin.get(); /*069*/ } SQ Lab.

classP의 고유 멤버 classG로부터 상속받은 멤버 private : x protected : y y public : z /*005*/ ~ /*009*/ y, z 두 개의 멤버 자료로 구성된 classG를 설정하였다.   /*010*/ ~ /*014*/ 자신의 고유 멤버 y, z와 classG에서 상속된 멤버로 구성되는 classP를 설정하였다. 따라서 classP에는 y가 두 개, z가 두 개로 각 각 중복 되어있다. classP의 고유 멤버 classG로부터 상속받은 멤버 private : x protected : y y public : z z SQ Lab.

classC의 고유 멤버 classP로부터 상속받은 멤버 private : x protected : y y /*015*/ ~ /*050*/ 자신의 고유 멤버 x, y, z, classC(), adder(), coutMemberdata()와 classP에서 상속된 멤버로 구성되는 classC를 설정하였다. 따라서 classC에는 y가 세 개, z가 세 개로 각 각 중복 되어있다. classC의 고유 멤버 classP로부터 상속받은 멤버 private : x protected : y y y(classG로부터 상속된 멤버) Public : z classC() adder() coutMemberData() z z(classG로부터 상속된 멤버) SQ Lab.

/*020*/ classC() /*021*/ { /*022*/ x = 1; /*023*/ y = 2; /*024*/ z = 3; x, y, z는 자신(classC)의 고유 멤버이므로 그대로 기술한다. 다음과 자신의 클래스를 나타내어도 된다.   classC::x = 1; classC::y = 2; classC::z = 3; /*025*/ classP::y = 4; /*026*/ classP::z = 5; classP로부터 상속받은 y와 z를 지적할 경우에는 앞에 classP::을 기술하여야 한다. /*027*/ classG::y = 6; /*028*/ classG::z = 7; classG로부터 상속받은 y와 z를 지적할 경우에는 앞에 classG::을 기술하여야 한다. /*030*/ ~ /*039*/ adder()멤버 함수를 설정하였다. 자신(classC)의 고유 멤버는 그대로 기술하고, classP로부터 상속받은 멤버를 지적할 경우에는 classP::을, classG로부터 상속받은 멤버를 지적할 경우에는 classG::을 앞에 기술하여야 한다. /*040*/ ~ /*049*/ coutMemberData()멤버 함수를 설정하였다. SQ Lab.

/*054*/ classC Cobject; classC형태의 객체 Cobject를 생성한다.   /*060*/ Cobject.z = 77; Cobject의 자신의 고유 멤버 z에 77을 수록한다. /*061*/ Cobject.classP::z = 88; Cobject의 classP로부터 상속된 멤버 z에 88을 수록한다. /*062*/ Cobject.classG::z = 99; Cobject의 classG로부터 상속된 멤버 z에 99를 수록한다. /*063*/ cout << "\n Cobject.z=>" << Cobject.z; Cobject의 자신의 고유 멤버 z 값을 화면에 나타낸다. /*064*/ cout << "\n Cobject.classP::z=>" << Cobject.classP::z; Cobject의 classP로부터 상속된 멤버 z 값을 화면에 나타낸다. /*065*/ cout << "\n Cobject.classG::z=>" << Cobject.classG::z; Cobject의 classG로부터 상속된 멤버 z 값을 화면에 나타낸다. SQ Lab.

(예) 중복 명칭 : 다중 부모 상속 /*001*/ // overloadingMember02cNcpp /*002*/ /*003*/ #include "iostream" /*004*/ using namespace std; /*005*/ class classF /*006*/ { /*007*/ protected : int y; /*008*/ public : int z; /*009*/ }; /*010*/ /*011*/ class classM /*012*/ { /*013*/ protected : int y; /*014*/ public : int z; /*015*/ }; /*016*/ SQ Lab.

/*017*/ class classC : public classF, public classM /*018*/ { /*018*/ { /*019*/ private : int x; /*020*/ protected : int y; /*021*/ public : int z; /*022*/ /*023*/ classC() /*024*/ { /*025*/ x = 1; /*026*/ y = 2; /*027*/ z = 3; /*028*/ classF::y = 4; /*029*/ classF::z = 5; /*030*/ classM::y = 6; /*031*/ classM::z = 7; /*032*/ } SQ Lab.

/*033*/ void adder(int cp=0, int fp=0, int mp=0) /*034*/ { /*034*/ { /*035*/ x = x + cp; /*036*/ y = y + cp; /*037*/ z = z + cp; /*038*/ classF::y = classF::y + fp; /*039*/ classF::z = classF::z + fp; /*040*/ classM::y = classM::y + mp; /*041*/ classM::z = classM::z + mp; /*042*/ }; /*043*/ void coutMemberData() /*044*/ { /*045*/ cout << "\n x=>" << x /*046*/ << "\n y=>" << y /*047*/ << "\n z=>" << z; /*048*/ cout << "\n\n classF::y=>" << classF::y /*049*/ << "\n classF::z=>" << classF::z; /*050*/ cout << "\n\n classM::y=>" << classM::y /*051*/ << "\n classM::z=>" << classM::z; /*052*/ } /*053*/ }; SQ Lab.

/*059*/ Cobject.coutMemberData(); /*054*/ void main() /*055*/ { /*056*/ classC Cobject; /*057*/ /*058*/ Cobject.adder(10, 20, 30); /*059*/ Cobject.coutMemberData(); /*060*/ cout <<" \n\n----------------------------\n"; /*061*/ /*062*/ Cobject.z = 111; /*063*/ Cobject.classF::z = 333; /*064*/ Cobject.classM::z = 555; /*065*/ /*066*/ cout << "\n Cobject.z=>" << Cobject.z; /*067*/ cout << "\n Cobject.classF::z=>" << Cobject.classF::z; /*068*/ cout << "\n Cobject.classM::z=>" << Cobject.classM::z; /*069*/ /*070*/ cout << "\n\n\n ype any character : "; /*071*/ cin.get(); /*072*/ } SQ Lab.

classC의 고유 멤버 classF로부터 상속받은 멤버 classM으로부터 private : x protected : y y /*005*/ ~ /*009*/ y, z 두 개의 멤버 자료로 구성된 classF를 설정하였다. /*011*/ ~ /*015*/ y, z 두 개의 멤버 자료로 구성된 classM를 설정하였다. /*017*/ ~ /*053*/ 자신의 고유 멤버 x, y, z, classC(), adder(), coutMemberdata()와 classF에서 상속된 멤버와 classM에서 상속된 멤버로 구성되는 classC를 설정하였다. 따라서 classC에는 y가 세 개, z가 세 개로 각 각 중복 되어있다. classC의 고유 멤버 classF로부터 상속받은 멤버 classM으로부터 private : x protected : y y Public : z classC() adder() coutMemberData() z SQ Lab.

/*023*/ classC() /*024*/ { /*025*/ x = 1; /*026*/ y = 2; /*027*/ z = 3; x, y, z는 자신(classC)의 고유 멤버이므로 그대로 기술한다. 다음과 자신의 클래스를 나타내어도 된다.   classC::x = 1; classC::y = 2; classC::z = 3; /*028*/ classF::y = 4; /*029*/ classF::z = 5; classF로부터 상속받은 y와 z를 지적할 경우에는 앞에 classF::을 기술하여야 한다. /*030*/ classM::y = 6; /*031*/ classM::z = 7; classM으로부터 상속받은 y와 z를 지적할 경우에는 앞에 classM::을 기술하여야 한다. /*033*/ ~ /*042*/ adder()멤버 함수를 설정하였다. 자신(classC)의 고유 멤버는 그대로 기술하고, classF로부터 상속받은 멤버를 지적할 경우에는 classF::을, classM으로부터 상속받은 멤버를 지적할 경우에는 classM::을 앞에 기술하여야 한다. /*043*/ ~ /*052*/ coutMemberData()멤버 함수를 설정하였다. SQ Lab.

/*056*/ classC Cobject; classC형태의 객체 Cobject를 생성한다.   /*062*/ Cobject.z = 111; Cobject의 자신의 고유 멤버 z에 111을 수록한다. /*063*/ Cobject.classF::z = 333; Cobject의 classF로부터 상속된 멤버 z에 333을 수록한다. /*064*/ Cobject.classM::z = 555; Cobject의 classM으로부터 상속된 멤버 z에 555를 수록한다. /*066*/ cout << "\n Cobject.z=>" << Cobject.z; Cobject의 자신의 고유 멤버 z 값을 화면에 나타낸다. /*067*/ cout << "\n Cobject.classF::z=>" << Cobject.classF::z; Cobject의 classF로부터 상속된 멤버 z 값을 화면에 나타낸다. /*068*/ cout << "\n Cobject.classM::z=>" << Cobject.classM::z; Cobject의 classM으로부터 상속된 멤버 z 값을 화면에 나타낸다. SQ Lab.

상속 관계에 virtual 선언 class subclassName : virtual [accessMode] parentClassName 상속 관계에 virtual을 선언 하면 부모 클래스의 같은 멤버가 상속될 경우 하나만을 상속한다. 동일한 멤버가 있는 부모 클래스는 모두 virtual로 선언해야 하며, 하나라도 선언을 해 주지 않으면 효력이 없어진다. SQ Lab.

(예) 중복 명칭 : 다중 부모 상속 /*001*/ // overloadingMemberVirtual01cNcpp /*002*/ /*003*/ #include "iostream" /*004*/ using namespace std; /*005*/ class classG /*006*/ { /*007*/ public : int gx; /*008*/ }; /*009*/ class classF : virtual public classG /*010*/ { /*011*/ public: int x; /*012*/ }; /*013*/ class classM : virtual public classG /*014*/ { /*015*/ public: int x; /*016*/ }; /*017*/ class classC : public classF, public classM /*018*/ { /*019*/ public: int x; SQ Lab.

/*027*/ void adder(int cp=0, int fp=0, int mp=0, int gp=0) /*028*/ { /*020*/ classC() /*021*/ { /*022*/ x = 1; /*023*/ classF::x = 3; /*024*/ classM::x = 5; /*025*/ gx = 7; /*026*/ } /*027*/ void adder(int cp=0, int fp=0, int mp=0, int gp=0) /*028*/ { /*029*/ x = x + cp; /*030*/ classF::x = classF::x + fp; /*031*/ classM::x = classM::x + mp; /*032*/ gx = gx + gp; /*033*/ }; /*034*/ void coutMemberData() /*035*/ { /*036*/ cout << "\n gx=========>" << gx /*037*/ << "\n classF::gx=>" << classF::gx /*038*/ << "\n classM::gx=>" << classM::gx; /*039*/ } /*040*/ }; SQ Lab.

/*046*/ Cobject.coutMemberData(); /*041*/ void main() /*042*/ { /*043*/ classC Cobject; /*044*/ /*045*/ Cobject.adder(10, 30, 50, 70); /*046*/ Cobject.coutMemberData(); /*047*/ cout << "\n\n----------------------------\n"; /*048*/ /*049*/ Cobject.gx = 99; /*050*/ cout << "\n Cobject.gx=========>" << Cobject.gx; /*051*/ cout << "\n Cobject.classF::gx=>" << Cobject.classF::gx; /*052*/ cout << "\n Cobject.classM::gx=>" << Cobject.classM::gx; /*053*/ /*054*/ cout << "\n\n\n Type any character : "; /*055*/ cin.get(); /*056*/ } SQ Lab.

classF의 고유 멤버 classG로부터 상속받은 멤버 private : protected public : x gx /*005*/ ~ /*008*/ gx 한개 개의 멤버 자료로 구성된 classG를 설정하였다.   /*009*/ ~ /*012*/ 자신의 고유 멤버 x와 classG로부터 virtual public으로 상속된 멤버로 구성된 classF를 설정하였다. classF의 고유 멤버 classG로부터 상속받은 멤버 private : protected public : x gx /*013*/ ~ /*016*/ 자신의 고유 멤버 x와 classG로부터 virtual public으로 상속된 멤버로 구성된 classM을 설정하였다. classM의 고유 멤버 classG로부터 상속받은 멤버 private : protected public : x gx SQ Lab.

classC의 고유 멤버 classF로부터 상속받은 멤버 private : protected Public : x /*017*/ ~ /*040*/ 자신의 고유 멤버 x, classC(), adder(), coutMemberData()와 classF와 classM으로부터 public으로 상속된 멤버로 구성된 classC를 설정하였다. 부모 클래스에서 classG로부터 상속받을 때 virtual을 선언하였으므로 gx는 하나만 상속된다. classC의 고유 멤버 classF로부터 상속받은 멤버 private : protected Public : x classC() adder() coutMemberData() x gx <========> gx SQ Lab.

/*020*/ classC() /*021*/ { /*022*/ x = 1; x는 자신(classC)의 고유 멤버이므로 그대로 기술한다. 다음과 자신의 클래스를 나타내어도 된다.   classC::x = 1; /*023*/ classF::x = 3; classF로부터 상속받은 x를 지적할 경우에는 앞에 classF::을 기술하여야 한다. /*024*/ classM::x = 5; classM으로부터 상속받은 x를 지적할 경우에는 앞에 classM::을 기술하여야 한다. /*025*/ gx = 7; classF의 gx와 classM의 gx는 동일한 멤버이다. 따라서 구분을 하지 않아도 되며 다음과 같이 표현하여도 된다. classF::gx = 7; classM::gx = 7; /*027*/ ~ /*033*/ adder()멤버 함수를 설정하였다. 자신(classC)의 고유 멤버는 그대로 기술하고, classF로부터 상속받은 멤버를 지적할 경우에는 classF::을, classM으로부터 상속받은 멤버를 지적할 경우에는 classM::을 앞에 기술하며, gx는 어느 부모 클래스를 기술하여도 되고 생략해도 된다. /*034*/ ~ /*039*/ coutMemberData()멤버 함수를 설정하였다. gx, classF::gx, classM::gx는 모두 동일한 멤버를 지적한다. SQ Lab.

/*043*/ classC Cobject; classC형태의 객체 Cobject를 생성한다.   /*049*/ Cobject.gx = 99; Cobject의 gx에 99를 수록한다. /*050*/ cout << "\n Cobject.gx=========>" << Cobject.gx; /*051*/ cout << "\n Cobject.classF::gx=>" << Cobject.classF::gx; /*052*/ cout << "\n Cobject.classM::gx=>" << Cobject.classM::gx; Cobject의 gx, classF::gx, classM::gx는 모두 동일한 멤버를 지적한다. SQ Lab.

[실습문제] [실습문제 1] 다계층 및 다중 부모 /*001*/ // practice1301cNcpp /*002*/   다음 프로그램을 해석하여 화면의 출력 결과를 나타내시오. /*001*/ // practice1301cNcpp /*002*/ /*003*/ #include "iostream" /*004*/ using namespace std; /*005*/ class classG /*006*/ { /*007*/ public: int gx; /*008*/ }; /*009*/ class classF : public classG /*010*/ { /*011*/ public: int x; /*012*/ }; SQ Lab.

/*013*/ class classM : public classG /*014*/ { /*015*/ public : int x; /*014*/ { /*015*/ public : int x; /*016*/ }; /*017*/ class classC : public classF, public classM /*018*/ { /*019*/ public : int x; /*020*/ classC() /*021*/ { /*022*/ x = 1; /*023*/ classF::x = 3; /*024*/ classM::x = 5; /*025*/ classF::gx = 7; /*026*/ classM::gx = 9; /*027*/ } /*028*/ void adder(int cp=0, int fp=0, int mp=0, int gp=0) /*029*/ { /*030*/ x = x + cp; /*031*/ classF::x = classF::x + fp; /*032*/ classM::x = classM::x + mp; /*033*/ classF::gx = classF::gx + gp; /*034*/ classM::gx = classM::gx + gp; /*035*/ }; SQ Lab.

/*036*/ void coutMemberData() /*037*/ { /*037*/ { /*038*/ cout << "\n x==========>" << x /*039*/ << "\n classF::x==>" << classF::x /*040*/ << "\n classM::x==>" << classM::x /*041*/ << "\n classF::gx=>" << classF::gx /*042*/ << "\n classM::gx=>" << classM::gx; /*043*/ } /*044*/ }; /*045*/ void main() /*046*/ { /*047*/ classC Cobject; /*048*/ /*049*/ Cobject.adder(10, 30, 50, 70); /*050*/ Cobject.coutMemberData(); /*051*/ cout << "\n\n-----------------------------\n"; /*052*/ /*053*/ Cobject.classF::gx = 111; /*054*/ Cobject.classM::gx = 333; /*055*/ cout << "\n Cobject.classF::gx=>" << Cobject.classF::gx; /*056*/ cout << "\n Cobject.classM::gx=>" << Cobject.classM::gx; /*057*/ SQ Lab.

/*058*/ cout << "\n\n\n Type any character : "; /*059*/ cin.get(); /*060*/ } SQ Lab.