Programming/C/C++ (42) 썸네일형 리스트형 C++/헤더 파일과 cpp 파일로 분리 예시 분리 전 코드1234567891011121314151617181920212223242526272829303132333435#include using namespace std; class Adder { int op1, op2;public: Adder(int a, int b); int process();}; Adder::Adder(int a, int b) { op1 = a; op2 = b;} int Adder::process() { return op1 + op2;} class Calculator {public: void run();}; void Calculator::run() { cout > a >> b; Adder adder(a, b); cout a >> b; Adder adder(a, b); cout C++/C++ 프로그램 작성법 헤더 파일과 cpp 파일 분리 클래스마다 클래스의 선언부와 구현부를 헤더 파일과 cpp 소스 파일로 분리하면 프로그램 전체를 관리하기 쉬울 뿐더러, 클래스를 다른 프로그램에서 재사용하기 쉽다. 클래스를 활용하는 모든 코드들은 클래스의 대한 선언이 필요하므로, 따로 분리해 놓은 헤더 파일에 선언부가 선언 되어 있으면 헤더파일만 include하여 재사용하면 된다. 다음과 같은 원칙으로 분리하여 C++의 소스코드를 작성하는 것이 바람직하다.* 클래스마다 선언부는 헤더 파일에, 구현부는 cpp파일에 분리하여 작성한다.* main() 등 함수나 전역 변수는 한 개 이상의 cpp 파일에 나누어 작성한다. visual stdio 솔루션 상 파일 저장 구조는 이렇다. Circle.h - 선언부12345678class .. C++/C++ 구조체 C와 호환적인 구조체와 선언 C++은 C와의 호환성을 위해 구조체(struct)를 지원한다.* C++ 구조체는 표준 C 구조체에서 기능을 확장하여 클래스와 동일한 구조와 기능을 가진다.* C++ 구조체는 struct로 선언하며, 멤버 변수와 멤버 함수를 가지고, C와 다르게 접근 지정도 해야 한다.* 디폴트 접근 지정은 public 이다. 구조체의 객체 생성 1234567891011struct structName {private: public: protected: }; structName stObj; cs [구조체 이름] [구조체 객체 이름]; 으로 생성하며C언어와 달리 구조체 객체 생성시 struct를 붙이지 않는다.struct structName stObj; 구조체와 클래스의 차이점 C++ 구조체는 .. C++/인라인 함수 인라인 함수의 필요성 - 오버헤드 함수의 실행과 종료 과정에서 종료를 할 때 시간 소모가 발생한다.시간 소모량이 클수록 오버 헤드가 발생한다. 오버 헤드는 함수의 실행과 종료가 많아 질수록 시간 소모량이 커지면서 발생한다고 볼 수 있다.오버 헤드는 다음과 같은 실행 플로우에서 발생한다. 함수 호출 오버헤드의 심각한 사례 다음 코드는 odd()함수의 x%2를 계산하는 시간보다, odd() 함수의 호출과 리턴에 따른 오버헤드 시간이 더 크다. 12345678910111213141516#include using namespace std; int odd(int x) { return (x % 2);}int main() { int sum = 0; for (int i = 1; i C++/접근지정자 접근 지정자란? Access Modifier, Access Specifier 라고도 하며, 객체 지향 언어에서 객체를 캡슐화 하고, 외부에서 접근이 가능한 공개 멤버와 외부에서의 접근을 허용하지 않는 인가하지 않는 비공개 멤버를 구분 짓는 지정자이다. C++ 에서는 3가지 멤버 접근 지정자를 지원한다. * private - 비공개 클래스 내의 멤버 함수에게만 접근을 허용, 인가 한다.* public - 공개 클래스 내외를 막론하고 프로그램의 모든 함수들에게 접근을 허용, 인가한다.* protected - 보호 클래스 내의 멤버 함수에게 접근을 허용 하며 이 클래스를 상속 받는 파생 클래스의 멤버 함수에게 접근을 허용, 인가한다. 디폴트 접근 지정 디폴트 접근 지정은 private로 처리되며 디폴트 접근 .. C++/소멸자 소멸자란? 객체가 생성시 생성자가 생성되는 것처럼 객체 소멸 시 소멸자 함수가 반드시 실행된다. 소멸자(destructor)는 객체가 소멸 되는 시점에서 자동으로 호출되는 클래스의 멤버 함수이다. 소멸자의 특징* 소멸자의 목적은 객체가 사라질 때 필요한 마무리 작업을 하기 위함이다. * 소멸자의 이름은 클래스 이름 앞에 ~를 붙인다.* 소멸자는 리턴 타입이 없으며 어떤 값도 리턴해서는 안된다.* 소멸자는 오직 한 개만 존재하며 매개 변수를 가지지 않는다.* 소멸자가 선언되어 있지 않으면 기본 소멸자(default destructor)가 자동으로 생성된다. 소스 코드 123456789101112131415161718192021222324252627282930313233343536#include using .. C++/예제/클래스/ Rectangle 클래스 만들기 문제 조건 * Rectangle 클래스는 width와 height의 두 멤버 변수를 가진다.* Rectangle 클래스는 3개의 생성자를 가진다.* 3개의 생성자는 기본생성자, 너비와 높이, 길이를 파라미터 값으로 가진다.* Rectangle 클래스는 정사각형 여부를 판독하는 isSquare() 함수를 가진다.* isSquare() 함수는 bool 값인 0 또는 1 , false 또는 true를 리턴한다. 소스 코드 12345678910111213141516171819202122232425262728293031323334353637383940#include using namespace std; class Rectangle {public: int width, height; Rectangle(); Recta.. C++/컴파일러에 의한 생성자 자동생성 기본 생성자는 프로그래머가 클래스 생성시 기본 생성자를 생성하지 않은 경우 컴파일러에 의해서 자동으로 생성된다. 가. 생성자를 선언하지 않은 Circle 클래스 12345678910 class Circle {public: int radius; double getArea();}; int main(){ Circle donut;}cs 나. 컴파일러에 의해서 기본 생성자 자동 삽입 12345678910111213class Circle{public: int radius; double getArea(); Circle();}; Circle::circle(){} int main() { Circle donut;}cs 만약 하나의 아래와 같은 생성자라도 생성되어 있을 경우에 컴파일러는 기본생성자를 생성하지 않으며, 기본생.. 이전 1 2 3 4 5 6 다음