-
[C++] ํจ์, ์ฐธ์กฐ์, ๋ํดํธ ์ธ์, ํจ์ ์ค๋ฒ๋ก๋ฉ, ํจ์ ์ค๋ฒ๋ผ์ด๋ฉ, ์ธ๋ผ์ธ ํจ์c & c++ 2022. 9. 20. 15:19
๐ก ํจ์ ํฌ์ธํฐ
: ํจ์์ ์ด๋ฆ == ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ผ๊ฐ ํจ์์ ์์ ์ฃผ์๋ฅผ ๊ฐ๋ฆฌํค๋ ํฌ์ธํฐ ์์
void (*ptr_func)(int, int);
: ํจ์๋ฅผ ๋ ๋ค๋ฅธ ํจ์์ ์ธ์๋ก ์ ๋ฌํ ๋ ์ ์ฉ
๐ก ์ฐธ์กฐ์ reference
: ํฌ๊ธฐ๊ฐ ํฐ ๊ตฌ์กฐ์ฒด์ ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ํจ์์ ์ธ์๋ก ์ ๋ฌํ ๋ ์ฌ์ฉ
: ์ฐธ์กฐ์๋ฅผ ์ด์ฉํด ์ฐ์ฐ์ ์ํ -> ์ฐธ์กฐ ๋ณ์ ๋ฟ๋ง ์๋๋ผ ๋์ ๋ณ์๋ ๋ณ๊ฒฝ
int x = 10; // ๋ณ์์ ์ ์ธ int& y = x; // ์ฐธ์กฐ์ ์ ์ธ cout << "x : " << x << ", y : " << y << endl; y++; // ์ฐธ์กฐ์๋ฅผ ์ด์ฉํ ์ฆ๊ฐ ์ฐ์ฐ cout << "x : " << x << ", y : " << y << endl; cout << "x์ ์ฃผ์๊ฐ : " << &x << ", y์ ์ฃผ์๊ฐ : " << &y;
: & ํ์ ์ ์๋ณํ๊ธฐ ์ํด ์๋ณ์๋ก ์ฌ์ฉ
ex) int& : intํ ๋ณ์์ ๋ํ ์ฐธ์กฐ
โ ์ฐธ์กฐ์์ ํ์ ์ ๋์์ด ๋๋ ๋ณ์์ ํ์ ๊ณผ ์ผ์นํด์ผํ๋ค.
โ ์ ์ธ๊ณผ ๋์์ ์ด๊ธฐํ๊ฐ ๋์ด์ผํ๋ค.
โ ํ๋ฒ ์ด๊ธฐํ๋๋ฉด, ์ฐธ์กฐํ๋ ๋์์ ๋ณ๊ฒฝํ ์ ์๋ค.
๐ก ์ฐธ์กฐ์ : ํจ์์ ์ธ์๋ก์ ์ ๋ฌ
: ํจ์๊ฐ ์ฐธ์กฐ์๋ฅผ ์ธ์๋ก ์ ๋ฌ๋ฐ์ผ๋ฉด, ์ฐธ์กฐ์๊ฐ ์ฐธ์กฐํ๊ณ ์๋ ์ค์ ๋ณ์์ ๊ฐ์ ํจ์ ๋ด์์ ์กฐ์ํจ
int main(void) { int num1 = 3, num2 = 7; cout << "๋ณ๊ฒฝ ์ num1์ ๊ฐ์ " << num1 << "์ด๋ฉฐ, num2์ ๊ฐ์ " << num2 << "์ ๋๋ค." << endl; Swap(num1, num2); cout << "๋ณ๊ฒฝ ํ num1์ ๊ฐ์ " << num1 << "์ด๋ฉฐ, num2์ ๊ฐ์ " << num2 << "์ ๋๋ค." << endl; return 0; } void Swap(int& x, int& y) { int temp; temp = x; x = y; y = temp; }
๐ก ๊ตฌ์กฐ์ฒด์ ์ฐธ์กฐ
: ์ฐธ์กฐ๋ฅผ ์ฌ์ฉํ๋ ์ด์ ๊ฐ ๊ตฌ์กฐ์ฒด์ ์ฐธ์กฐ๊ฐ ๋ง๋ค
struct Book { string title; string author; int price; }; void Display(const Book&); int main(void) { Book web_book = {"HTML๊ณผ CSS", "ํ๊ธธ๋", 28000}; Display(web_book); return 0; } void Display(const Book& bk) { cout << "์ฑ ์ ์ ๋ชฉ์ " << bk.title << "์ด๊ณ , "; cout << "์ ์๋ " << bk.author << "์ด๋ฉฐ, "; cout << "๊ฐ๊ฒฉ์ " << bk.price << "์์ ๋๋ค."; }
๐ก ๋ํดํธ ์ธ์
: ๊ธฐ๋ณธ๊ฐ์ด ๋ฏธ๋ฆฌ ์ ์๋์ด ์๋ ์ธ์
1. ํจ์์ ์ํ์๋ง ์ง์ ํ ์ ์๋ค.
2. ๊ฐ์ฅ ์ค๋ฅธ์ชฝ๋ถํฐ ์์ํ์ฌ ์์๋๋ก๋ง ์ง์ ํ ์ ์๋ค
3. ๊ฐ์ด๋ฐ ์ธ์๋ค๋ง ๋ณ๋๋ก ๋ํดํธ ์ธ์๋ฅผ ์ง์ ํ ์๋ ์๋ค.
: ํจ์๋ก ์ ๋ฌ๋ ์ธ์๋ ์ผ์ชฝ๋ถํฐ ์์๋๋ก ๋งค๊ฐ๋ณ์ ๋ชฉ๋ก์ ๋์ ๋๋ค
: ์ธ์์ ์ ๋ฌ์ ๊ฑด๋๋ธ ์ ์๋ค
void Display(int x, int y, char ch = 'a', int z = 4); // ํจ์์ ์ํ 1. Display(1, 2); // ๊ฐ๋ฅํจ -> display(1, 2, 'a', 4)์ ๊ฐ์. 2. Display(3, 4, 'b'); // ๊ฐ๋ฅํจ -> display(3, 4, 'b', 4)์ ๊ฐ์. 3. Display(5, 6, 'c', 9); // ๊ฐ๋ฅํจ -> display(5, 6, 'c', 8)์ ๊ฐ์. 4. Display(7, 8, , 9); // ์ค๋ฅ : ์ธ์ ์ ๋ฌ์ ๊ฑด๋๋ธ ์ ์์.
๐ก ํจ์ ์ค๋ฒ๋ก๋ฉ
: ๊ฐ์ ์ด๋ฆ์ ํจ์๋ฅผ ์ค๋ณตํ์ฌ ์ ์ -> ๊ฐ ํจ์๋ง๋ค ๋งค๊ฐ๋ณ์๊ฐ ๋ค๋ฅด๋ค
: ์ฌ๋ฌ ํจ์๋ฅผ ํ๋์ ์ด๋ฆ์ผ๋ก ์ฐ๊ฒฐ
: ๊ฐ์ ์ผ์ ์ฒ๋ฆฌํ๋ ํจ์๋ฅผ ๋งค๊ฐ๋ณ์์ ํ์์ ์กฐ๊ธ์ฉ ๋ฌ๋ฆฌํ์ฌ, ํ๋์ ์ด๋ฆ์ผ๋ก ์์ฑํ๊ฒ ํจ
: == ๋คํ์ฑ์ ๊ตฌ์ฑ
: ์ค๋ฒ๋ก๋ฉ๋ ํจ์๋ฅผ ํธ์ถํ๋ฉด ๊ฐ์ ์๊ทธ๋์ฒ๋ฅผ ๊ฐ์ง๋ ํจ์์ ์ํ์ ์ฐพ์ ํธ์ถํ๋ค.
1. void Display(const char* str, int n); // ๋ฌธ์์ด str์ n๋ฒ ์ถ๋ ฅํจ. 2. void Display(const char* str1, const char* str2); // ๋ฌธ์์ด str1๊ณผ str2๋ฅผ ์ฐ๋ฌ์ ์ถ๋ ฅํจ. 3. void Display(int x, int y); // x * y๋ฅผ ์ถ๋ ฅํจ. 4. void Display(double x, double y); // x / y๋ฅผ ์ถ๋ ฅํจ. Display("C++", 3); // 1๋ฒ Display() ํจ์ ํธ์ถ -> "C++C++C++" Display("C++", " Programming"); // 2๋ฒ Display() ํจ์ ํธ์ถ -> "C++ Programming" Display(3, 4); // 3๋ฒ Display() ํจ์ ํธ์ถ -> 12 Display(4.2, 2.1); // 4๋ฒ Display() ํจ์ ํธ์ถ -> 2 Display(4.2, 3); // 3๋ฒ๊ณผ 4๋ฒ ๋ชจ๋ ํธ์ถ ๊ฐ๋ฅ -> ์ปดํ์ผ ์ค๋ฅ๊ฐ ๋ฐ์ํจ.
๐ก ํจ์ ์ค๋ฒ๋ผ์ด๋ฉ
: ์ด๋ฏธ ์ ์๋ ํจ์๋ฅผ ๋ฌด์ํ๊ณ , ๊ฐ์ ์ด๋ฆ์ ํจ์๋ฅผ ์๋กญ๊ฒ ์ ์ํ๋ ๊ฒ
: ๋ฉค๋ฒ ํจ์์ ๋์๋ง์ ์ฌ์ ์ํ๋ ๊ฒ, ํจ์์ ์ํ์ ๊ธฐ์กด ๋ฉค๋ฒ ํจ์์ ์ํ๊ณผ ๊ฐ์์ผํ๋ค.
โ ํ์ ํด๋์ค์์ ์ง์ ์ค๋ฒ๋ผ์ด๋ฉ
void Person::ShowPersonInfo() // Person ํด๋์ค { cout << name_ << "์ ๋์ด๋ " << age_ << "์ด์ ๋๋ค." << endl; } ... void Student::ShowPersonInfo() // Student๋ Person์ ํ์ํด๋์ค { // ์ฌ์ ์ํ ํจ์ cout << "์ด ํ์์ ํ๋ฒ์ " << student_id_ << "์ ๋๋ค." << endl; } Student kim(20220920, "์ฌ๋", 20); kim.ShowPersonInfo(); // ํ์ ํด๋์ค์์ ๊ธฐ์ด ํด๋์ค์ ์๋ ๋ฉค๋ฒ ํจ์ ํธ์ถ kim.Person::ShowPersonInfo();
* Student ๊ฐ์ฒด๋ ์์ ์ด ์ฌ์ ์ํ ShowPersonInfo() + ๊ธฐ์ด ํด๋์ค์ ์๋ ํจ์ ๋๋ค ํธ์ถ
๐ก ์ธ๋ผ์ธ ํจ์
: ํจ์ ํธ์ถ -> (์คํ) ๋งค๊ฐ๋ณ์, ํธ์ถ ๋๋๋ค ๋์๊ฐ ์ฃผ์๊ฐ ์ ์ฅ -> (์คํ)์ง์ญ ๋ณ์ ์ ์ฅ -> ํธ์ถ ๋๋๋ค ์ ์ฅ๋ ์ฃผ์๊ฐ์ผ๋ก ๋์๊ฐ๋ค -> ์คํ์ ์ ์ฅ๋ ํจ์ ์ ๋ณด ์ ๊ฑฐ
: ํธ์ถ๋ ๋ ํจ์์ ๋ชจ๋ ์ฝ๋๋ฅผ ํธ์ถ๋ ์๋ฆฌ์ ๋ฐ๋ก ์ฝ์ ํ๋ ๋ฐฉ์
: ํจ์ ํธ์ถ์๊ฐ ์ ์ฝ, ํธ์ถ ๊ณผ์ ์ผ๋ก ์๊ธฐ๋ ์ฌ๋ฌ๊ฐ์ง ์ด์ ํฌ๊ธฐ
inline int Sub(int x, int y) { return x - y; } inline void Print(int x) { cout << "๊ณ์ฐ ๊ฒฐ๊ณผ๋ " << x << "์ ๋๋ค."; } int main(void) { int num1 = 5, num2 = 3; int result; result = Sub(num1, num2); Print(result); return 0; }
๐ก ๋งคํฌ๋ก ํจ์
: #define ํจ์์ ์ ์
: ๋ชจ๋ ์ธ์๋ฅผ ๊ดํธ({})๋ก ๊ฐ์ธ์ผํ๋ค.
#include <stdio.h> #define SQR(X) X*X int main(void) { int result; int x = 5; puts(SQR(10)); // 100 puts(SQR(x)); // 25 puts(SQR(x+3)); // 23 return 0; }
'c & c++' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋๋ฒ๊ฑฐ, ์ธํ ๋ฆฌ์ฝ๋ (0) 2022.09.27 [C++] ํด๋์ค, ์ ๊ทผ ์ ์ด์, this (1) 2022.09.20 [C++] ๊ตฌ์กฐ์ฒด, ๊ณต์ฉ์ฒด, ์ด๊ฑฐ์ฒด (0) 2022.09.20 [C++] C++์ด๋? string ํด๋์ค (1) 2022.09.19 [C] ๊ธฐํธ ์์ (0) 2022.09.18