목록C++ (42)
컴공생의 다이어리
클래스 템플릿(Class Template) 함수를 템플릿으로 정의했듯이 클래스도 템플릿으로 정의가 가능하다. 그리고 이렇게 정의된 템플릿을 가리켜 클래스 템플릿이라고 하며, 이를 기반으로 컴파일러가 만들어 내는 클래스를 가리켜 템플릿 클래스라 한다. 클래스 템플릿은 객체 생성 시 명시적으로 결정하고자 하는 자료형을 선언해야 한다. #include using namespace std; template class Data{ T data; public: Data(T num) { data=num; } void setData(T num) { data=num; } T getData(void) { return data; } }; int main(){ Data a(0);//T를 int로 간주하고 객체 생성 a.setD..
함수 오버로딩은 함수의 구현부는 동일하지만, 인자만 다른 여러 함수를 중복하여 선언한다는 문제가 있다. int ADD(int a, int b){ return a+b; } double ADD(double a, double b){ return a+b; } 템플릿(template) 템플릿은 함수 오버로딩에서 발전된 형태이다. //T라는 이름(type name)에 대해서, 다음에 정의하는 대상을 템플릿으로 선언 template T ADD(T a, T b){ return a+b; } int main(){ cout
아래 표와 같이 private를 어떤 속성으로 상속하든 결과는 private가 되며, protectec는 상속되는 속성에 따라 private 또는 protected가 된다. 그리고 public 또한 상속되는 속성에 따라 private, protected, public이 됨을 알 수 있다. 부모 클래스의 속성 상속 속성 상속시 속성 private private private private protected private private public private protected private private protected protected protected protected public protected public private private public protected protected public..
#include #include int main() { std::istringstream ss("123"); int x; ss >> x; std::cout > x; return x; } int main() { std::cout
#include #include #include class Human { std::string name; int age; public: Human(const std::string& name, int age) : name(name), age(age) {} std::string get_info() { return "Name :: " + name + " / Age :: " + std::to_string(age); } friend std::ofstream& operator
아래 코드를 통해 'test.txt'라는 파일에 "파일에 쓰기!"라는 문자를 저장할 수 있다. #include #include #include int main() { // 파일 쓰기 준비 std::ofstream out("test.txt"); std::string s; if (out.is_open()) { out
파일 전체를 한 번에 읽기 파일 전체를 한 번에 읽으려면 아래와 같은 코드를 사용하면 된다. #include #include #include int main() { // 파일 읽기 준비 std::ifstream in("test.txt"); std::string s; if (in.is_open()) { // 위치 지정자를 파일 끝으로 옮긴다. in.seekg(0, std::ios::end); // 그리고 그 위치를 읽는다. (파일의 크기) int size = in.tellg(); // 그 크기의 문자열을 할당한다. s.resize(size); // 위치 지정자를 다시 파일 맨 앞으로 옮긴다. in.seekg(0, std::ios::beg); // 파일 전체 내용을 읽어서 문자열에 저장한다. in.read(..
fstream 파일 스트림은 기본적인 istream이나 ostream 클래스 보다 더 지원하는 기능이 더 많기 때문에 이를 상속 받아서 작성되었으며, 각각을 상속 받은 것이 ifstream과 ofstream이다. 이들 클래스를 모두 포함하는 라이브러리로 fstream을 사용하면 된다. #include #include #include int main() { // 파일 읽기 준비 std::ifstream in("test.txt"); std::string s; if (in.is_open()) { in >> s; std::cout
ios_base 클래스에서, 스트림의 입출력 형식을 바꿀 수 있다. 예를 들어서 일반적으로 수를 입력하면 10진수로 처리되었지만, 이번에는 16진수로 처리할 수 있는 방법은 아래와 같다. #include #include int main() { int t; while (true) { std::cin.setf(std::ios_base::hex, std::ios_base::basefield); std::cin >> t; std::cout
아래와 같은 코드를 실행하면 t를 int가 아닌 문자를 입력받는다면 cin에 fail비트가 켜진 상태이므로, 플래그를 초기화하지 않는 이상 cin을 이용하여 입력을 받을 수 없다(문자열 s를 입력받지 못함). #include #include int main() { int t; std::cin >> t; // 고의적으로 문자를 입력하면 failbit 가 켜진다 std::cout s; } 따라서 이를 해결하려면 아래와 같이 코드를 작성해야 한다. #include #include int main() { int t; while (true) { std::cin >> t; std::cout