λͺ©λ‘μ 체 κΈ (1005)
π 곡λΆνλ μ§μ§μνμΉ΄λ μ²μμ΄μ§?
π μ°Έμ‘° reference ν¬μΈν° λ³μλ₯Ό μ μΈνκΈ° μν΄ * κΈ°νΈλ₯Ό μ¬μ©νμ§λ§ μ°Έμ‘° λ³μλ₯Ό μ μΈνκΈ° μν΄ & κΈ°νΈλ₯Ό μ¬μ©νλ€ μ°Έμ‘° λ³μλ μ μΈλ λ³μμ λν λ³λͺ (alias) βοΈ μ°Έμ‘° λ³μ μ΄λ―Έ μ μΈλ λ³μ (μλ³Έ λ³μλ‘ μ§μΉ) μ λν λ³λͺ μ°Έμ‘°μ & λ₯Ό μ΄μ©νμ¬ μ μΈνλ©°, μ μΈ μ λ°λμ μλ³Έ λ³μλ‘ μ΄κΈ°ν ν΄μΌ νλ€ μ°Έμ‘° λ³μκ° μ μΈλλ©΄ μ°Έμ‘° λ³μ μ΄λ¦λ§ μμ±λλ©°, λ³λμ 곡κ°μ΄ ν λΉλμ§ μλλ€ μ°Έμ‘° λ³μλ μ΄κΈ°νλ‘ μ§μ λ μλ³Έ λ³μμ 곡κ°μ 곡μ νλ€ βοΈμ°Έμ‘° λ³μ μ¬μ© μ°Έμ‘° λ³μλ ν¬λν°κ° μλλ―λ‘ refn.setRadius(30) μ΄λ κ² ν΄μΌ νλ€ μ°Έμ‘° λ³μμ λν ν¬μΈν°λ₯Ό λ§λ€ μ μλ€ int *p = &refn; βοΈμ°Έμ‘° λ³μ μ μΈ μ μ£Όμ μ¬ν μ΄κΈ°νκ° μλ€λ©΄ μ»΄νμΌ μ€λ₯κ° λ°μνλ€ μ°Έμ‘°..
π κ°μ²΄ μΉν κ°μ²΄μ λͺ¨λ λ°μ΄ν°κ° λΉνΈ λ¨μλ‘ λ³΅μ¬λλ€ π ν¨μμ κ°μ²΄ λ¦¬ν΄ return λ¬Έμ΄ μ€νλλ©΄ 볡μ¬λ³Έμ΄ μκΈ°κ³ ν¨μλ₯Ό νΈμΆν κ³³μΌλ‘ μ λ¬λλ€ // κ°μ²΄ λ¦¬ν΄ #include using namespace std; class Circle { int radius; public: Circle() { radius = 1; } Circle(int radius) { this->radius = radius; } void setRadius(int radius) { this->radius = radius; } double getArea() { return 3.14 * radius * radius; } }; Circle getCircle() { Circle tmp(30); // tmp κ°μ²΄μ 볡μ¬λ³Έ λ¦¬ν΄ retu..
π ν¨μ νΈμΆ μ κ°μ²΄ μ λ¬ βοΈ 1) κ°μ μν νΈμΆ κ³Όμ ν¨μ μμμ λ§€κ° λ³μ κ°μ²΄μ μ΄λ€ λ³νκ° μΌμ΄λλ μ€μΈμ (μλ³Έ κ°μ²΄) λ₯Ό νΌμμν€μ§ μλ μ₯μ μ€μΈμ κ°μ²΄μ ν¬κΈ°κ° ν¬λ©΄ κ°μ²΄λ₯Ό 볡μ¬νλ μκ°μ΄ 컀μ§λ λ¨μ κ°μ²΄κ° ν¨μμ μ λ¬λλ©΄, ν¨μμ λ§€κ° λ³μ κ°μ²΄κ° μμ±λκ³ , ν¨μκ° μ’ λ£νλ©΄ λ§€κ° λ³μ κ°μ²΄κ° μλ©Έλλ€ λ§€κ° λ³μ κ°μ²΄μ μμ±μμ μλ©Έμκ° λͺ¨λ μ€νλλκ°? -> μλλ€ κ°μ²΄λ₯Ό λ§€κ° λ³μλ‘ κ°μ§λ ν¨μμ κ²½μ° C++ μ»΄νμΌλ¬λ λ§€κ° λ³μ κ°μ²΄μ μμ±μλ μ€νλμ§ μκ³ μλ©Έμλ§ μ€νλλλ‘ μ»΄νμΌ νλ€ μ»΄νμΌλ¬λ λ§€κ° λ³μ κ°μ²΄μ μμ±μκ° μ€νλμ§ μλλ‘ νλ€ μλ©Έμμ κ²½μ°λ λ€λ₯΄λ€ λ§€κ° λ³μ κ°μ²΄μ μμ±μκ° μ€νλμ§ γ λ³κ³ μλ©Έμλ§ μ€νλλ λΉλμΉ κ΅¬μ‘°λ, ν¨μ νΈμΆ μ μλ³Έ κ°μ²΄μ μν..
π ν¨μμ μΈμ μ λ¬ λ°©μ βοΈ 1) κ°μ μν νΈμΆ (call by value) νΈμΆνλ μ½λμμ λ겨주λ μ€μΈμ κ°μ΄ ν¨μμ λ§€κ° λ³μμ 볡μ¬λμ΄ μ λ¬λλ λ°©μ μ€μΈμμ κ°μ 볡μ¬νμ¬ μ λ¬νλ―λ‘, ν¨μ λ΄μμ μ€μΈμλ₯Ό μμμν¬ μ μλ μ₯μ μ΄ μλ€ λ§€κ° λ³μ a, b κ° swap() ν¨μμ μ€νμ μμ±λκ³ , m, n κ°μ΄ a, bμ 볡μ¬λλ€ aμ bκ°μ΄ μλ‘ κ΅νλκ³ , swap() ν¨μκ° μ’ λ£νλ©΄ swap() μ€νκ³Ό ν¨κ» a, b λ μ¬λΌμ§μ§λ§ main() μ€νμ m, n μ λ³ν¨μμ΄ 2, 9 κ°μ μ μ§νλ€ // κ°μ μν νΈμΆλ‘ swap ν¨μ νΈμΆ #include using namespace std; void swap(int a, int b) { int tmp; tmp = a; a = b; b = ..
π λ¬Έμμ΄ μΉν string a = "hi"; string b = "hello"; a = b; π λ¬Έμμ΄ λΉκ΅ compare λ λ¬Έμμ΄μ΄ κ°μΌλ©΄ 0, str λ³΄λ€ μ¬μ μμΌλ‘ μμ μ€λ©΄ μμ, λ€μ μ€λ©΄ μμ string name = "gani"; string alias = "tani"; int res = name.compare(alias); if (res == 0) cout
π this ν¬μΈν° βοΈ this λ κ°μ²΄ μμ μ λν ν¬μΈν° ν΄λμ€μ λ©€λ² ν¨μ λ΄μμλ§ μ¬μ©λλ€ this λ μ μ λ³μλ μλκ³ ν¨μ λ΄μ μ μΈλ μ§μ λ³μλ μλλ€ this λ κ°μ²΄μ λ©€λ² ν¨μκ° νΈμΆλ λ, μ»΄νμΌλ¬μ μν΄ λ³΄μ΄μ§ μκ² μ λ¬λλ κ°μ²΄μ λν μ£Όμμ΄λ€ βοΈ this μ κ°μ²΄ this λ κ°μ²΄ μμ μ λν ν¬μΈν° μμ±μ ν¨μμ κ²½μ° this-> λ μλ΅ κ°λ₯ βοΈthis μ νμν κ²½μ° 1) λ©€λ² λ³μμ μ΄λ¦κ³Ό λμΌν μ΄λ¦μΌλ‘ λ§€κ° λ³μ μ΄λ¦μ μ§κ³ μ νλ κ²½μ° λ§€κ° λ³μμ μ΄λ¦μ μμ€ νλ‘κ·Έλ¨μ κ°λ ₯ν μ£Όμ μν μ΄λ€ 2) κ°μ²΄μ λ©€λ² ν¨μμμ κ°μ²΄ μμ μ μ£Όμλ₯Ό 리ν΄ν λ νμνλ€ μ°μ°μ μ€λ³΅μ ꡬνν λ, λ§μ΄ λ°μνλ€ βοΈthis μ μ μ½ μ‘°κ±΄ this λ ν΄λμ€μ λ©€λ² ν¨μμμ..
π κ°μ²΄ ν¬μΈν° μ μΈ λ° νμ© βοΈ κ°μ²΄ ν¬μΈν° κ°μ²΄μ λ©€λ² ν¨μλ₯Ό μ½κ³ κ°μ μ°κ±°λ λ©€λ² ν¨μλ₯Ό νΈμΆν μ μλ€ βοΈ κ°μ²΄μ λν ν¬μΈν° λ³μ μ μΈ Circle *p; βοΈν¬μΈν° λ³μμ κ°μ²΄ μ£Όμ μ§μ κ°μ²΄μ μ£Όμλ κ°μ²΄ μ΄λ¦ μμ & μ°μ°μλ₯Ό μ¬μ©νμ¬ νννλ€ p = &donut; βοΈν¬μΈν°λ₯Ό μ΄μ©ν κ°μ²΄ λ©€λ² μ κ·Ό κ°μ²΄ μ΄λ¦μΌλ‘ λ©€λ²λ₯Ό μ κ·Όν λ μ (.) μ°μ°μλ₯Ό μ΄μ©νλ€ d = donut.getArea(); κ°μ²΄ ν¬μΈν°λ‘ λ©€λ²λ₯Ό μ κ·Όν λ -> μ°μ°μλ₯Ό μ΄μ©νλ€ d = p -> getArea(); d = (*p).getArea(); // κ°μ²΄ ν¬μΈν° μ μΈ λ° νμ© #include using namespace std; class Circle { int radius; public: Circle() {..
π Circle ν΄λμ€μ κ°μ²΄ μμ± λ° νμ© // Circle ν΄λμ€μ΄ κ°μ²΄ μμ± λ° νμ© #include using namespace std; class Circle { public: int radius; double getArea(); }; double Circle::getArea() { return 3.14 * radius * radius; } int main() { // κ°μ²΄ μμ± Circle donut; // λ©€λ² λ³μ donut.radius = 1; // λ©€λ² ν¨μ double area = donut.getArea(); cout