라즈베리파이 부팅 시 자동 실행
·
Raspberrypi
라즈베리파이 부팅 시 자동 실행 rc.local, .bashrc, init.d, systemd 등의 방법이 있지만 crontab이 가장 간편하다. crontab 자동 실행하고 싶은 명령어를 정리해서 쉘 스크립트로 작성한다. 다음 명령어를 입력한다. sudo crontab -e 나는 처음 입력하니까 에디터를 선택하라고 했는데, vim basic이 무난할 것 같아서 선택했다. crontab 설정 파일이 에디터로 열렸으면 맨 밑에 다음과 같이 실행하고 싶은 파일을 입력한다. 파일명은 절대경로로 입력해야하는 듯 하다. ... @reboot sudo 파일명.sh 리부팅하면 적용된다. 참고 https://blog.naver.com/emperonics/221770579539
C++ 복사 생성자(Copy Constructor)
·
C++/Class
복사 생성자(Copy Constructor) 보안이 중요한 경우 복사 생성자를 private로 정의하여 복사를 방지하기도 한다. 기본 복사 생성자는 얕은 복사이므로 주의하자. 이를 방지하기 위해 깊은 복사를 구현해야 하는데, 시간적 여유가 없을 경우 임시로 delete를 통해 구현하기도 한다. copy initialization, direct initialization, uniform initialization 모두 복사 생성자를 호출한다. #include #include class Fraction { int numerator_; int denominator_; public: Fraction(int num = 0, int den = 1) : numerator_(num), denominator_(den) ..
C++ 위임 생성자 (Delegating Constructor)
·
C++/Class
위임 생성자 (Delegating Constructor) C++11 생성자에서 직접 생성하지 않고, 이미 구현된 생성자를 호출해서 대신 생성하도록 하는 것이다. 기본 예제 다음 예제에서는 st2를 생성할 때 id_, name_ 멤버 변수를 초기화 리스트로 초기화하고있다. #include using namespace std; class Student { int id_; string name_; public: Student(const string& name_in) : id_{0}, name_{name_in} { print(); } Student(const int& id_in, const string& name_in) : id_{id_in}, name_{name_in} { print(); } void prin..
C++ 멤버 초기화 리스트 (Member Initializer Lists)
·
C++/Class
멤버 초기화 리스트 (Member Initializer Lists) 생성자를 만들 때 멤버들을 초기화해주는 기능 C++11부터 배열도 이 방식으로 초기화 가능하다고 한다. #include class Something { int i_; double d_; char c_; public: Something() : i_{ 1 }, d_{ 3.14 }, c_{ 'a' } {} }; int main() { Something a; } 기본 값 적용 우선순위가 헷갈릴 때 #include class Something { int i_ = 100; double d_ = 100.0; char c_ = 'F'; public: Something() : i_{ 1 }, d_{ 3.14 }, c_{ &#..
C++ 생성자 (Constructor)
·
C++/Class
생성자 (Constructor) 인스턴스가 처음 생성될 때 호출되는 함수 멤버 변수부터 생성하고 그 다음 호출된다. 멤버 중에 클래스가 있을 경우 해당 클래스의 생성자부터 호출된다. #include class Second { public: Second() { std::cout
C++ 접근 지정자 (Access Specifier)
·
C++/Class
접근 지정자 (Access Specifier) 종류 public : 어디서든 접근 가능하다. private : 해당 클래스와 friend 클래스만 접근 가능하다. protected : private 특성을 기본으로, 상속받은 자식 클래스도 접근 가능하다. 명시하지 않는 경우, 기본 값은 private이다. private이어도 같은 클래스면 다른 인스턴스의 멤버를 사용할 수 있다. class Date { int year_; int month_; int day_; void copyFrom(const Date& original) { year_ = original.year_; month_ = original.month_; day_ = original.day_; } }; public 멤버 변수들에 대해 unifo..
C++ Class
·
C++/Class
Class struct vs class c++에서의 구조체도 멤버 함수를 가질 수 있다. _단순한 기능_의 경우 struct를 사용해도 무방하다. class를 사용하는 이유는 다양한 객체지향 프로그래밍 기법들을 적용하기 위함이다. Access Specifier (public, private, protected 등) 접근 지정자 (Access Specifier) 생성자 (Constructor) 소멸자 (Destructor) this const static friend 익명 객체 (Anonymous Class) Nested Types 실행 시간 측정 (Run Time Measurement) 참고 따라하며 배우는 C++
따라하며 배우는 C++ 8장
·
C++/TBC++
따라하며 배우는 C++ 8장 Class 참고 따라하며 배우는 C++
C++ assert
·
C++/Library
assert 라이브러리 assert Debug 모드에서만 런타임에 작동한다. VS의 전처리기 설정에 매크로가 설정되어있다. Debug 모드에서는 _DEBUG Release 모드에서는 NDEBUG 내부 조건이 거짓이면 Debug Error를 발생시킨다. #include int main() { assert(false); } 최대한 나눠서 쓰는게 디버깅하기에 좋다. static assert 컴파일 타임에 작동한다. Release 모드에서도 작동한다. 에러 문구를 넣어야 한다. #include int main() { const int x = 5; //const int x = 4; // 컴파일 안됨 static_assert(x == 5, "x should be 5"); } 릴리즈 모드에선 작동되지 않는다면, 차라..