ν΄λμ€λ₯Ό μ¬μ©ν λ,
ν΄λμ€ μμ μλ λ©€λ² λ³μμ λν΄μ μ΄κΈ°νλ₯Ό ν΄μ€μΌνλ€λ κ²μ
μ μκ³ μλλ° μ¬λ¬κ°μ§ λ°©λ² μ€ μ΄λ κ²μ μ¨μΌν κΉ? μ λν΄μ
λ€λ€λ³΄λ €κ³ νλ€
λ ν·κ°λ¦¬λ μΌμ΄ μλλ‘ ~~
- ν΄λμ€ λ©€λ² λ³μλ
- ν΄λμ€ λ©€λ² λ³μ μ΄κΈ°ν λ°©λ² 3κ°μ§
1. ν΄λμ€ λ©€λ² λ³μ (Class Member Variable) λ
ν΄λμ€ λ©€λ² λ³μ μ΄κΈ°νλ₯Ό νλ €λ©΄, λ¨Όμ λ©€λ² λ³μλ₯Ό μμμΌνλκΉ
μ§§κ² μ λ¦¬λ§ νλ €κ³ νλ€
μν€λ°±κ³Ό μΈμ©:
κ°μ²΄ μ§ν₯ νλ‘κ·Έλλ°μμ λ©€λ² λ³μ(member variable) λλ λ©€λ² νλλ νΉμ κ°μ²΄μ μ°κ²°λ λ³μμ νλμ΄λ©°, ν΄λΉ λ³μμ λͺ¨λ λ©μλ(λ©€λ² ν¨μ)μ μ κ·Όμ΄ κ°λ₯νλ€. ν΄λμ€ κΈ°λ° μΈμ΄μμ μ΄λ€μ λ μ’ λ₯λ‘ κ΅¬λ³λλ€: .....
κ·Έλ λ€.. μ μλ₯Ό μ½μΌλ©΄ μ μ μλ―μ΄ λ©€λ² λ³μλ
C++μ΄λ Java κ°μ κ°μ²΄ μ§ν₯ νλ‘κ·Έλλ°μμ μ¬μ©νλ κ°λ μΌλ‘
Class μμ μμ(?) λμ΄μλ μΉκ΅¬μ΄λ€
μμλ₯Ό λ€μ΄μ 보λλ‘ νκ² λ€
#include <iostream>
using namespace std;
class initClass
{
private:
int var1;
int var2;
string str1;
};
initClassλΌλ ν΄λμ€μ
μλ£νμ΄ intνμΈ var1, var2λΌλ λ©€λ² λ³μμ
μλ£νμ΄ stringμΈ str1μ΄λΌλ λ©€λ² λ³μκ° μ μλμ΄ μλ κ²μ λ³Ό μ μλ€
κ΅³μ΄ μ΄κΈ°νλ₯Ό ν΄μΌνλ....? λΌλ μκ°μ ν μ μλΉ
νμ§λ§ λ§μ μ¬λλ€μ΄ νλΌκ³ νλ건 νμ μ΄μ κ° μλκ±°λ€
μλμμ μ§§κ² λ€λ£¨κ² λ€
1) λ³μ μ΄κΈ°νλ₯Ό ν΄μΌνλ μ΄μ
μ¬μ€, μ΄κΈ°νλ₯Ό ν΄μΌνλ μ΄μ λ λ©λͺ¨λ¦¬ κ΄μ μμ λ€λ€μΌνλ€
νμ§λ§ λμ μ보μ΄λ λ©λͺ¨λ¦¬λ³΄λ€..! μ€μ μ°νλ κ°μ λ΄μΌ μλΏμ κ² κ°μμ
μμλ‘ μ€λͺ μ νλ €κ³ νλ€
#include <iostream>
using namespace std;
class initClass
{
private:
int var1;
int var2;
string str1;
public:
int getVar1() { return var1; }
int setVar1(int var1) { this->var1 = var1; }
int getVar2() { return var2; }
string getStr1() { return str1; }
};
int main(void)
{
initClass test;
test.setVar1(10);
cout << test.getVar1() << endl;
cout << test.getVar2() << endl;
cout << test.getStr1() << endl;
return 0;
}
initClassλΌλ ν΄λμ€μ λ©€λ² λ³μμΈ var1, var2, str1μ λν κ°μ
μΆλ ₯ν΄λ³΄λ μμμ΄λ€
var1μ λν΄μλ§ 10μ΄λΌλ κ°μΌλ‘ μ€μ ν΄μ£Όμλ€
μ€νμμΌλ³΄λ©΄!!
10 /* int var1 */
32767 /* int var2 */
/* string str1 */
κ°μ μ€μ ν΄μ£Όλ var1μ 10μΌλ‘ μΆλ ₯μ΄ λμμ§λ§,,
μ무 κ°λ μλ var2μ μ°λ κΈ° κ°μ λ±λλ€
stringνμΈ str1μ " "μ μΆλ ₯νλ€
μ«μ μλ£νμ μ΄μ²λΌ μνμ§ μλ κ°μ΄ λμ€κΈ° λλ¬Έμ
μνλ κ²°κ³Όκ° μλμ¬ μλ μλ€
μλ₯Ό λ€μ΄,, 쑰건문μ μ¬μ©ν΄μ κ° λΉκ΅λ₯Ό ν΄μ μ΄κ² μ μμ μΈ κ²½μ°μΈμ§!!
μλͺ»λ κ²½μ°μΈμ§!! μ λν΄μ 체ν¬λ₯Ό ν ν λ°,
int main(void)
{
initClass test;
test.setVar1(10);
cout << test.getVar1() << endl;
cout << test.getVar2() << endl;
cout << test.getStr1() << endl;
if( test.getVar2() < 0 )
cout << "var2λ μλͺ»λ κ°" << endl;
else
cout << "var2λ μ μμΈ κ°" << endl;
return 0;
}
μ«μν κ°μ λν΄ μ ν¨μ±μ λ°μ§ λ, μλ°μμΌλ‘ λΉκ΅ν ν λ°
var2μ λν΄ λ³μ μ΄κΈ°νλ₯Ό νμ§ μμΌλ©΄ λ¬΄μ¨ κ°μΌλ‘ λμ¬μ§ λͺ¨λ₯΄κΈ° λλ¬Έμ
μ΄κΈ°νλ μ΅κ΄μ μΌλ‘ ν΄μ£Όλ κ²μ΄ μ’λ€
(ν΄λμ€ λ©€λ²λ³μλ₯Ό μλ‘ λ€μμ§λ§, μΌλ°μ μΌλ‘ μ¬μ©νλ λ³μλ€λ λΉμ°ν ν΄μ€μΌνλ€)
κ·Έλ¬λ©΄ λ€μ λ³Έλ‘ μΌλ‘ λμμμ, ν΄λμ° λ©€λ² λ³μλ₯Ό μ΄κΈ°ννλ λ°©λ²μ μ 리ν΄λ³΄κ² λΉ
2. ν΄λμ€ λ©€λ² λ³μ μ΄κΈ°ν λ°©λ² 3κ°μ§
λ©€λ² λ³μ μ΄κΈ°ν λ°©λ²μλ 3κ°μ§κ° μλ€ (λ μμ μλ μμ)
1) λ©€λ²λ³μ μ μμ μ΄κΈ°ν νκΈ°
2) μμ±μμμ μ΄κΈ°ν νκΈ°
3) μμ±μμμ μ΄κΈ°ν 리μ€νΈλ‘ μ΄κΈ°ν νκΈ°
νλμ© μλ₯Ό 보면μ μ 리νκ² λ€
1) λ©€λ²λ³μ μ μμ μ΄κΈ°ν νκΈ°
μ λ°©λ²μ μ°λ¦¬κ° λ³΄ν΅ λ³μμ κ°μ λ£λ λ°©λ²κ³Ό λμΌνλ€
int var1 = 10;
μκ±°λ₯Ό ν΄λμ° μμμ λ©€λ² λ³μ μ μν λ λκ°μ΄ μ¨μ£Όλ©΄ λλ€ ^0^/
class initClass
{
private:
int var1 = 10;
};
μ΄λ κ² λ§μ΄λ€ λ무 κ°λ¨ν΄μ ν λ§μ μμλ€
2) μμ±μμμ μ΄κΈ°ν νκΈ°
λλ²μ§Έ λ°©λ²μ μμ±μμμ κ°μ μ΄κΈ°ν ν΄μ£Όλ κ²μ΄λ€
class initClass
{
private:
int var1 = 10;
int var2;
string str1;
public:
initClass()
{
var1 = 10;
}
};
μμ±μ μμμ ν΄λμ€ λ©€λ² λ³μμ κ°μ μ§μ μ΄κΈ°νν μ μκ³ ,
μμ μμλ κΈ°λ³Έ μμ±μλ‘ μ΄κΈ°νλ₯Ό νλλ°
νλΌλ―Έν°κ° λ€λ₯Έ μμ±μλ₯Ό μ€λ²λ‘λ©(Overloading)ν΄μ κ°μ λ°μ μ΄κΈ°νν μλ μλ€
class initClass
{
private:
int var1 = 10;
int var2;
string str1;
public:
/* Default μμ±μ*/
initClass()
{
var1 = 10;
}
/* Overloading ν μμ±μ*/
initClass(int var)
{
var1 = var;
}
};
int main(void)
{
initClass test(10);
}
μ΄λ°μμΌλ‘ λ§μ΄λ€
κ·Έλ¦¬κ³ μμ±μμμ μ΄κΈ°ν νλ λ°©λ²μ΄ νλ λ μλλ°
κ·Έκ²μ λ°λ‘ ↓↓↓↓↓↓
3) μμ±μμμ μ΄κΈ°ν 리μ€νΈλ‘ μ΄κΈ°ν νκΈ°
λ°λ‘... μ΄κΈ°ν 리μ€νΈ (Member Initialize List == λ©€λ²μ΄λμ λΌμ΄μ¦) λΌλ κ²μ
μ¬μ©ν΄μ μ΄κΈ°ν ν μ μλ€
λ§ κ·Έλλ‘ μ΄κΈ°νλ₯Ό 리μ€νΈλ‘ μ¬λ¬κ°~~ νλκ±°κ³ ,
μ¬μ©λ²μ μμ±μ ν¨μ μμ μ½λ‘ (:)μ λΆμ¬μ μ¬μ©νλ©΄ λλ€
initClass(int v1, int v2) : var1(v1), var2(v2) {}
μ΄λ κ²!! λ©€λ² λ³μμ κ΄νΈλ₯Ό ν΅ν΄ νλΌλ―Έν°λ‘ λ°μ κ°μ λμ ν΄μ£Όλ λͺ¨μμ΄λ€
μμμλ³Έ μμ±μ νμκ³Ό λΉκ΅λ₯Ό ν΄λ³΄λ©΄
/* 1. Default μμ±μ */
initClass()
{
var1 = 10;
}
/* 2. μμ±μ μ€λ²λ‘λ©, κ° μ μ */
initClass(int var)
{
var1 = var;
}
/* 3. μμ±μ μ€λ²λ‘λ©, μ΄κΈ°ν 리μ€νΈ μ¬μ© */
initClass(int v1, int v2) : var1(v1), var2(v2)
{}
μλ κ² λμκ² λ€.
λ©€λ² μ΄κΈ°ν 리μ€νΈ μ¬μ©μ
μ΄λ κ² λ©€λ² λ³μλ₯Ό μ΄κΈ°ννλ κ²λΏλ§ μλλΌ
μμ λ°μ ν΄λμ€μ κ²½μ° λΆλͺ¨ ν΄λμ€μ λ©€λ² λ³μλ₯Ό μ΄κΈ°ν νκ±°λ
볡μ‘ν μ μλ λ νΌλ°μ€(Reference) λ³μ μ΄κΈ°νμλ μ μ©νλ€
λ©€λ² λ³μκ° λ§λ€λ©΄, μ΄κΈ°ν 리μ€νΈλ μμ² κΈΈμ΄μ§κΈ°λ νλ€ -_-a
2-1. κ·Έλμ λ μ¬μ©ν΄μΌνλλ°
λ μ¬μ©ν΄λ μ¬μ€ μκ΄ μλ€!
νμ§λ§ 볡ν©μ μΌλ‘ μ¬μ©ν λλ μμ μ μμΌλ, μ΄κΈ°ν 3κ°μ§ λ°©λ²μ
μμλ§ μκ³ λμ΄κ°μ
μ§μ ν΄λ³΄λ κ²μ΄ μ μΌμ΄λ€
* μ½λ
#include <iostream>
using namespace std;
class initClass
{
private:
int var1 = myPrint(10, "λ©€λ²λ³μμ μ");
public:
initClass() : var1(myPrint(30, "μ΄κΈ°ν 리μ€νΈ"))
{
var1 = myPrint(20, "μμ±μμμ μ΄κΈ°ν");
}
public:
int getVar1() { return var1; }
int myPrint(int ret, string str)
{
cout << ret << ", "<< str << endl;
return ret;
}
};
int main(void)
{
initClass test;
cout << test.getVar1() << endl;
return 0;
}
* μ€ν κ²°κ³Ό
30, μ΄κΈ°ν 리μ€νΈ
20, μμ±μμμ μ΄κΈ°ν
20
μ§μ.. μ 리ν΄λ³΄μλ©΄
- μ΄κΈ°ν μ°μ μμ: μ΄κΈ°ν 리μ€νΈ > μμ±μμμ μ΄κΈ°ν
μ΄λ κ² λκ³ ,
μ μμμμλ λ©€λ²λ³μ μ μλ νΈμΆμ΄ μλμ΄μ
μ΄κΈ°ν 리μ€νΈλ₯Ό μ§μ°κ³ ! νλ²λ ν μ€νΈ γ±γ±
* μ½λ
class initClass
{
private:
int var1 = myPrint(10, "λ©€λ²λ³μμ μ");
public:
initClass()
{
var1 = myPrint(20, "μμ±μμμ μ΄κΈ°ν");
}
};
* μ€ν κ²°κ³Ό
10, λ©€λ²λ³μμ μ
20, μμ±μμμ μ΄κΈ°ν
κ·Έλ λ€...
- μ΄κΈ°ν μ°μ μμ: μ΄κΈ°ν 리μ€νΈ > λ©€λ² λ³μ μ μμ μ΄κΈ°ν > μμ±μμμ μ΄κΈ°ν
μλ κ² λμκ² λ€ ^^7
μ΅μ’ μΌλ‘ μ΄κΈ°ν λλ κ°μ λ§μ§λ§ μ°μ μμ λ°©λ²μΌλ‘ λ ν λκΉ
μ£Όμνμ
* μν€ λ°±κ³Ό - λ©€λ² λ³μ
ko.wikipedia.org/wiki/%EB%A9%A4%EB%B2%84_%EB%B3%80%EC%88%98
'π Cλ C++' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
C++ μ€λ§νΈ ν¬μΈν°λ₯Ό μμ보μ - (1) unique_ptr (0) | 2021.05.25 |
---|---|
Boost Asioμ λν΄μ μμ보μ (4) | 2021.05.20 |
C++ λλ¬Έμ/μλ¬Έμ λ³ν (4) | 2021.02.26 |
C++ Function Object (ν¨μ κ°μ²΄)λ₯Ό μμ보μ (4) | 2021.01.22 |
C++ std::mapμ μ¬μ©ν΄λ³΄μ (4) | 2021.01.07 |