일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- #2차원배열
- #JAVASCRIPT
- #C++ 연산자함수오버로딩
- #bubbleSort
- hyperledger transaction
- html5 new tag
- 토큰경제
- #3차원배열
- html video
- #1차원배열
- html code
- git flow
- #CallByAddress
- #성적관리프로그램
- html multimedia
- html youtube
- html charset
- #C++ has~a
- #binary
- html plug-in
- docker example
- #다차원포인터
- html object
- #android activity
- html id
- #자바상속#자바이즈어#is~a
- mac terminal command
- border-box
- relative path
- 하이퍼레저패브릭
- Today
- Total
목록C++ (24)
A sentimental robot
대입연산자도 복사생성자와 마찬가지로 얉은 대입과 깊은 대입이 있다. 1. 얉은 대입 연산자 함수 (디폴트 대입연산자 함수) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 #include using namespace std; class A { int a; public: A(int a = 0) { this->a = a; } void setA(int a) { this->a = a; } int getA()const { return a; } A& operator = (const A &t) { // call by reference if (this == &t) return *this; /..
연산자 함수 멤버함수와 외부함수로 만들 수 있다. 멤버함수로 만드는 것을 원칙으로 한다. 멤버함수로 만들 수 없는 경우 외부함수로 만들되 멤버함수처럼 접근할 수 있는 friend로 제공한다. 새로운 연산자 함수를 만들지 않는다; 연산자 본연의 의미를 바꾸어서는 안된다. 객체와 객체 , 객체와 데이터를 연산처리 할 수 있게 한다! 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 #include using namespace std; class A { int a; public : A(int num):a(num){} void setA(int a) { this->a..
friend 단점: 캡슐화가 파괴될 위험이 있다. 장점: 코드의 확장 1. class 2. member function 잘 안쓰임 3. function 제일 잘 쓰인다. function 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 #include using namespace std; class A { int a; public: friend void disp(); }; void disp() { A aa; aa.a = 100; // A클래스에서 friend로 선언했기 때문에 A의 private int a에 접근가능 ; 캡슐화 파괴 cout
1 2 3 4 5 6 7 8 9 #include"menue.h" int main() { Menu menu; } cs main.cpp menue.h 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 ..
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 #include #include using namespace std; class A { string name; public: A(string name) { cout
const field : 콜론 초기화를 해야한다. const method : 메소드 내에서 필드의 값을 보호하는 목적 const object : 객체 안의 데이터 보호 목적 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 #include using namespace std; class A { const int a; int b; public: A(int aa) :a(aa) , b (aa){ //콜론초기화: 생성자가 동작하기 전에 cosnt 필드 초기화 하기 //b = aa; } int getA()const { return a; } int getB()const { return b;..
복사생성자 호출시기 1. 객체 생성 시 객체를 인자로 줄 경우 2. 객체 생성 시 객체를 대입 할 경우 3. 메소드의 매개변수로 객체를 선언할 경우 4. 메소드에서 객체를 리턴할 경우 복사생성자는 객체가 생성되는 시점에서 데이터들이 몽땅 복사가 된다. cf. 대입연산자함수는 객체가 생성된 이후에 ; 복사생성자와 시점이 다르다. 얉은 복사 : 필드를 포인터로 쓰지 않음 깊은 복사 : 개발자 몫 둘 다 목적은 field copy - 얉은 복사 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 #include using namespace std; class A { int a; public:A(int ..
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 #include #include #include"input.h" #include"operators.h" #include"disp.h" using namespace std; class Calculation{ int *a; int*b; char *c; float *res; public : Calculation(){ a=new int; b=new int; c=new char; res=new float; } void cac(){ input(*a,b,&c); *res=operators(..