β» λ³Έ ν¬μ€ν μ μ νλΈ C++ Full Course κ°μλ₯Ό κΈ°λ°μΌλ‘ μ κ° μ§μ μ 리ν C++ κΈ°λ³Έ λ¬Έλ²μ λν κΈμ λλ€.
μλ‘ μ μ κΉ λ§νμλ©΄, C++μ λν΄ λ°°μ΄ κ²μ κΉλ¨Ήμ§ μκΈ° μν΄ λΈλ‘κ·Έμ μ 리νλ κ²μ λλ€. κΈ°λ³Έμ μΌλ‘ λ€λ₯Έ νλ‘κ·Έλλ° μΈμ΄λ₯Ό λ€λ£¬ μ μ΄ μκΈ° λλ¬Έμ κ°μ μμμ λ³΄κ³ μ κ° μ λ§μλλ‘ λΉΌκ±°λ μΆκ°νλ©΄μ μ 리ν μμ μ λλ€. μ΅λν νλ¦° λΆλΆμ΄ μμ§ μκ² μ κ² μ§λ§ νΉμ μλͺ»λ λΆλΆμ΄ μμΌλ©΄ μλ €μ£ΌμΈμ!
< 20. User Defined Functions>
function = a block of reusable code
void happyBirthday(std::string name, int age);
int main(){
std::string name = "Chaewon";
int age = 25;
happyBirthday(name, age);
return 0;
}
void happyBirthday(std::string name, int age){
std::cout << "Happy Birthday to " << name << '\n';
std::cout << "Happy Birthday to " << name << '\n';
std::cout << "Happy Birthday dear " << name << '\n';
std::cout << "Happy Birthday to " << name << '\n';
std::cout << "You are " << age << " years old!\n";
}
ν¨μλ λΈλ‘μ λ§λ€μ΄μ μ¬λ¬ λ² λ€μ μ¬μ©ν μ μλ€. ν¨μμ μ΄λ¦μ μ§μ λλ μ΄λ€ κ±Έ μννλμ§ λͺ ννκ² μ μ μλλ‘ λ§λ€μ΄μΌ νλ€.
μΌλ°μ μΌλ‘ κ°λ μ±μ μ’κ² νκΈ° μν΄, ν¨μλ₯Ό μ μΈνκ³ μ μν λ main function μ΄νμ ν¨μλ€μ μ μνλ€. νμ§λ§ νλ‘κ·Έλλ° μΈμ΄λ Top-DownμΌλ‘ μ½κΈ° λλ¬Έμ main functionμμ ν¨μλ₯Ό λͺ»μ°Ύλλ€.
κ·Έλ κΈ°μ main function μ΄μ μ ν¨μλ₯Ό μ μΈνκ³ main function μ΄νμ ν¨μλ₯Ό μ μνλ λ°©μμ΄ μ£Όλ‘ μ¬μ©λλ€.
ν¨μλ₯Ό μ μΈν λλ return κ°μ μ 무, parameterμ μ 무μ λ°λΌ μ°¨μ΄κ° μλ€.
ν¨μμ λ°ν νμ μ ν¨μκ° νΈμΆλ ν λ°ννλ κ°μ λ°μ΄ν° νμ μ λνλΈλ€. λ°ν νμ μ ν¨μμ μ μν λ μ°μΈλ€.
- λ°ννμ μ΄ `void`μΈ κ²½μ°: ν¨μκ° λ°ννλ κ°μ΄ μμμ μλ―Ένλ€. μ μ½λλ λ°νκ°μ΄ μλ ν¨μμ΄λ€.
- λ°ννμ μ΄ `void`κ° μλ κ²½μ° : λ°λμ `return`λ¬Έμ μ¬μ©νμ¬ ν΄λΉ νμ μ κ°μ λ°νν΄μΌ νλ€. `return`λ¬Έμ ν¨μ μ€νμ μ€λ¨νκ³ κ°μ λ°ννλ μν μ νλ€. λν λ°νλ κ°μ ν¨μ νΈμΆλ¬Έμ ν΅ν΄ λ³μμ λμ λ μ μλ€.
#include <iostream>
// λ μλ₯Ό κ³±ν κ²°κ³Όλ₯Ό λ°ννλ ν¨μ μ μ (λ°ν νμ
: int)
int multiply(int a, int b) {
int result = a * b;
return result;
}
int main() {
int x = 5;
int y = 3;
// λ°ν νμ
μ΄ voidκ° μλ ν¨μ νΈμΆ ν λ°νκ°μ λ³μμ μ μ₯
int z = multiply(x, y);
std::cout << "λ μμ κ³±: " << z << std::endl;
return 0;
}
μ μ½λλ λ°νκ°μ΄ int μΈ multiply ν¨μμ΄λ€. ν΄λΉ μ½λμμλ ν¨μ μ μΈκ³Ό μ μλ₯Ό mainν¨μ μ μ νμ§λ§ μ¬λ¬ ν¨μλ€μ΄ 볡μ‘νκ² μμ κ²½μ° main μ νλ‘ λλλ κ²μ΄ κ°λ μ±μ μν΄ μ’λ€.
ν¨μμ μΈμ(argument)μ 맀κ°λ³μ(parameter)λ ν¨μ μ μμ ν¨μ νΈμΆμ κ΄μ μμ ꡬλ³λλ€.
parameterμ ν¨μμ μ μΈ λλ μ μ λΆλΆμ ν¬ν¨λλ©°, ν¨μ λ΄λΆμμ μμ μ μννλ€.
argumentλ ν¨μμ μ λ¬λλ μ€μ κ°μ΄λ€. ν¨μλ₯Ό νΈμΆν λ ν¨μμ νμν μΈμκ°μ μ λ¬νμ¬ ν΄λΉ ν¨μλ₯Ό μ€ννκ² λλ€. μ΄λ, μ λ¬λ μΈμ κ°μ ν¨μ λ΄μ 맀κ°λ³μμ 볡μ¬λλ€.
#include <iostream>
// λ κ°μ μ μλ₯Ό λνλ ν¨μ μ μ
int sum(int a, int b) {
int result = a + b;
return result;
}
int main() {
int x = 3;
int y = 4;
// ν¨μ νΈμΆ μ μΈμλ‘ xμ yλ₯Ό μ λ¬
int z = sum(x, y);
std::cout << "λ μμ ν©: " << z << std::endl;
return 0;
}
μμ μμ μ½λλ₯Ό 보면 `a`μ `b`λ 맀κ°λ³μλ‘ μ¬μ©λμμΌλ©°, ν¨μ νΈμΆ μ `x`μ `y`κ° μΈμλ‘ μ λ¬λμμμ μ μ μλ€.
< 21. return keyword>
return = return a value back to the spot where you called the encompassing function
double square(double length);
double cube(double length);
int main()
{
double length = 6.0;
double area = square(length);
double volume = cube(length);
std::cout << "Area: " << area << "cm^2\n";
std::cout << "Volume: " << volume << "cm^3\n";
return 0;
}
double square(double length){
return length * length;
}
double cube(double length){
return length * length * length;
}
μμ μμ μ½λλ₯Ό 보면 `square`ν¨μμ `cube`ν¨μλ₯Ό main μμ μ μΈ ν main μλμ μ μν κ²μ λ³Ό μ μλ€.
ν΄λΉ μμ λ void, λ°νκ°μ΄ μλ νμ μ΄ μλ double νμ μ returnκ°μ΄ μλ ν¨μ μμ μμ μ μ μλ€.
μ΄μ²λΌ ν¨μλ returnκ°μ μ 무μ parameterμ μ 무μ λ°λΌ μ°¨μ΄λ₯Ό 보μΈλ€
< 22. Overloaded Functions >
Overloaded Functions : functions can share the same name, but you need a different set of parameters.
#include <iostream>
void bakePizza();
void bakePizza(std::string topping1);
void bakePizza(std::string topping1, std::string topping2);
int main()
{
bakePizza("pepperoni", "mushroom");
return 0;
}
void bakePizza(){
std::cout << "Here is your pizza!\n";
}
void bakePizza(std::string topping1){
std::cout << "Here is your " << topping1 << " pizza!\n";
}
void bakePizza(std::string topping1, std::string topping2){
std::cout << "Here is your " << topping1 << " and " << topping2 << " pizza!\n";
}
μμ μ½λ μμλ₯Ό 보면 μΈ κ°μ ν¨μλͺ μ΄ λμΌν¨μ μ μ μλ€. λ³μλ μ€λ³΅λ μ΄λ¦μ μ¬μ©ν μ μμ§λ§ ν¨μλ ν¨μλͺ μ΄ λμΌνκ³ λ§€κ°λ³μλ₯Ό λ¬λ¦¬ νλ κ²μ΄ νμ©λλ€. μ΄λ₯Ό μ€λ²λ‘λ©(overloading)μ΄λΌκ³ νλ€.
νμ§λ§ ν¨μλͺ λ λκ°κ³ 맀κ°λ³μλ κ°μ κ²μ μ€λ³΅λ μ μλ€. ν¨μλͺ +맀κ°λ³μ μ΄ μΈνΈλ ν¨μμ κ³ μ ν μκ·Έλμ²λΌκ³ λ³Ό μ μλ€.
μ΄λ κ² μ€λ²λ‘λ©μ μ¬μ©νλ μ΄μ λ μ½λμ κ°λ μ±κ³Ό μ¬μ¬μ©μ±μ ν₯μμν¬ μ μκΈ° λλ¬Έμ΄λ€. μ μ¬ν μμ μ νλ ν¨μλ€μ ν κ³³μ λͺ¨μ κ΄λ¦¬ κ°λ₯νλ€λ μ₯μ μ΄ μλ€.
< 23. Variable Scope>
Local variables : declared inside a function or block {}
Global variables : declared outside of all functions
#include <iostream>
int myNum = 3; // Global variable
void printNum();
int main()
{
int myNum = 1; // Local variable
printNum();
return 0;
}
void printNum(){
int myNum = 2; // Local variable
std::cout << myNum;
}
λ³μ λ²μλ λ³μκ° μ ν¨ν λ²μλ₯Ό μλ―Ένλ€. C++μμλ μ§μλ³μμ μ μλ³μλ‘ λλ μ μλ€.
μμ μ½λ μμλ₯Ό 보μ μ°μ 맨 μ²μ `int myNum = 3`μ μ μλ³μμ ν΄λΉνλ€. μ μλ³μλ κ°λ₯νλ©΄ μ¬μ©νμ§ μλ κ² μ’μλ° μ μ namespaceλ₯Ό μ€μΌμν€κΈ° λλ¬Έμ΄λ€. κ°λ₯νλ©΄ λ³μλ€μ ν¨μλΈλ‘ λ΄μμ μ μΈνλ κ²μ΄ μμ νλ€.
ν΄λΉ μμ μ½λμμ main ν¨μμ myNumμ΄ μκ³ printNum ν¨μμ myNumμ΄ μλλ° κ²°κ³Όμ μΌλ‘ ν΄λΉ μ½λλ₯Ό μ€ννλ©΄ 2κ° μΆλ ₯λλ€. main ν¨μμμ printNum() ν¨μλ₯Ό μ€ννμ§λ§ 1μΈ myNumμ mainμ μ§μλ³μμ΄λ―λ‘ printNumμ μ μ μλ€. κ·Έλ κΈ°μ printNumμμ μ μΈλ myNumμ κ°μΈ 2κ° μΆλ ₯λκ² λλ€.
μ μλ³μμ μ§μλ³μκ° κ°μ΄ μλ κ²½μ° μ°μ μ§μλ³μκ° μ°μ μλλ€.
λ§μ½ μ μ λ³μλ₯Ό μ°κ³ μΆλ€λ©΄ ::(scope resolution operator)λ₯Ό λΆμ¬μΌ νλ€.
std::cout << ::myNum;
μμ κ°μ μ½λλ₯Ό μ€ννλ©΄ μ μλ³μμΈ myNumμ μΆλ ₯ν μ μλ€.
κ°μλ Bro CodeλΌλ μ νλ²μ μ΄ 6μκ° λΆλμ κ°μμ λλ€. μμμμ λλ μ Έ μλ μ±ν° μ λͺ©μ κΈ°μ€μΌλ‘ μμ±ν μμ μ λλ€. λ€λ§ μμ΄κ°μλΌλ μ μ΄ μ’ κ±Έλ¦¬λλ°..νκ΅μ΄ κ°μλ₯Ό μ°Ύλ€κ° μ»΄ν©νΈ νλ©΄μ μ κ° μ§λ£¨νμ§ μκ³ μ λ°°μΈ μ μλ μμμ λͺ» μ°Ύμμ μμ΄κ°μλ₯Ό λ£κ² λμμ΅λλ€. νΉμ μ΄ λΈλ‘κ·Έλ₯Ό 보μκ³ λ€μ μκ°μ κ°μ§ λΆμ΄ κ³μλ€λ©΄ μμ΄μλ§λ μκ³ μ΄μνμ§λ§ μλλ²μλλ νκΈμλ§λ μμΌλ λ무 κ²λ¨Ήμ§ λ§μκ³ λ€μ΄λ³΄κΈΈ λ°λλλ€:)
ν΄λΉ κ°μ μμμ μλμ κ±Έμ΄λκ² μ΅λλ€. νΉμ νλ¦° λΆλΆμ΄λ μΆκ°ν΄μ£Όκ³ μΆμ λΆλΆμ΄ μμΌλ©΄ μλ €μ£ΌμΈμ.
<μ΄μ κΈ>
2023.03.21 - [TIL/C++] - [C++ κΈ°λ³Έλ¬Έλ²] #1 HelloWorldλΆν° TypedefκΉμ§