객체 초기화....
초기화 , 대입의 차이점을 명확히 알면 어려운 내용이 아니다.
초기화
int a = 10 , string test = "hello world";
struct a = {10, 20, 30};
대입
int a;
a = 10;
string test;
test = "hello world";
struct a;
a = {10, 20, 30};
c언어에서는 초기화 나 대입이나 큰 차이가 없었는데
c++ 에서는 차이가 좀 있다
클래스 때문인데
생성자 와 대입연산자 때문이다.
초기화 , 대입의 차이점을 명확히 알면 어려운 내용이 아니다.
초기화
int a = 10 , string test = "hello world";
struct a = {10, 20, 30};
대입
int a;
a = 10;
string test;
test = "hello world";
struct a;
a = {10, 20, 30};
c언어에서는 초기화 나 대입이나 큰 차이가 없었는데
c++ 에서는 차이가 좀 있다
클래스 때문인데
생성자 와 대입연산자 때문이다.
class test
{
private:
string _name;
public:
test(string name);
};
test::test(string name) : _name(name) { }
위의 문장이 초기화 방법이다. : <-- 요거 쓰면 초기화 한다.
생성자 중괄호안에서 값을 변경하면 대입연산이 된다.
생성자 , 대입연산자 모두 비용이다.
다만 대입연산자를 쓰면 생성자가 호출된 후 대입연산자로 호출이 되므로
비용이 비효율 적이다.
그리고 c++ 에서는 클래스 설계시 생성자에서 초기화 하는 습관을 들이자.
{
private:
string _name;
public:
test(string name);
};
test::test(string name) : _name(name) { }
위의 문장이 초기화 방법이다. : <-- 요거 쓰면 초기화 한다.
생성자 중괄호안에서 값을 변경하면 대입연산이 된다.
생성자 , 대입연산자 모두 비용이다.
다만 대입연산자를 쓰면 생성자가 호출된 후 대입연산자로 호출이 되므로
비용이 비효율 적이다.
그리고 c++ 에서는 클래스 설계시 생성자에서 초기화 하는 습관을 들이자.