Using
동일한 이름을 가진 변수,함수가 생길 수 있다.
클래스,namespace가 다르게 해결할 수 있다.

모호성(Ambiguity)
using namespace로 여러 namespace를 불러오면 똑같은 변수가 있을 수 있다.
그러면 namespace를 생략하고 사용할 수 없다.
namespace명::변수명 으로 사용하던지 아니면 {}영역을 구분줘서 사용해야한다.

using namespace를 선언하면 취소할 수 없다.
최대한 분리하여 사용하자.

#include <iostream>

namespace a
{
	int a1(2);
}
namespace b
{
	int a1(3);
}

int main()
{
	//std::를 생략할 수 있다.
	using namespace std;
	//아래처럼 하나만 불러와 사용할 수 있다.
	//using std::cout;

	//cout << "hello" << endl;

	//아래 두namespace에 똑같은 이름의 변수가 있다.
	//사용할려면 영역을 분리해서 사용하자
	{
		using namespace a;
		cout << a1 << endl;
	}
	{
		using namespace b;
		cout << a1 << endl;
	}
	

	return 0;
}

auto 키워드

큰프로그램을 작성하면 많은 변수를 작성하게 된다.
변수의 자료형을 프로그래머가 매번 정하면 효율이 떨어지게된다.

auto는 형추론을 통해 자동으로 자료형을 정해준다.
auto는 형추론을 해야하기해 자동화를 해주어야한다.

함수 리턴타입도 auto로 설정할 수 있다.
함수 리턴 값도 변수로 저장할때 auto로 설정가능하다.
파라미터타입은 auto로 설정할 수 없다.

파라미터타입 설정은 template로 사용할 수 있다.

#include <iostream>

//리턴타입을 auto로 설정했다.
auto add(int a, int b)
{
	return a + b;
}

//-> double방식으로 설정할 수 있다.
auto add(double a, double b) -> double
{
	return a + b;
}

int main()
{
	using namespace std;

	//int a = 123;
	//int형
	auto a = 123;
	//double형
	auto b = 23.4;

	//함수 리턴 값도 auto로 설정가능하다.
	auto result = add(1, 3);
	
	return 0;
}



+ Recent posts