본문 바로가기

ETC72

[c++] inline 함수 인라인 함수란? 인라인 함수: inline 키워드로 선언된 함수 인라인 함수에 대한 처리 1. 인라인 함수를 호출하는 곳에 인라인 함수 코드를 확장 삽입 매크로와 유사 코드 확장 후 인라인 함수는 사라짐 2. 인라인 함수 호출 함수 호출에 따른 오버헤드 존재하지 않음 프로그램의 실행 속도 개선 3. 컴파일러에 의해 이루어짐 인라인 함수의 목적 c++ 프로그램의 실행 속도 향상 자주 호출되는 짧은 코드의 함수 호출에 대한 시간 소모를 줄임 c++ 에는 짧은 코드의 멤버 함수가 많기 때문 인라인 함수를 사용해야 하는 이유 인라인 함수 사용 예시 인라인 함수의 장단점 장점: 프로그램의 실행 시간이 빨라진다. 단점: 인라인 함수 코드의 삽입으로 컴파일된 전체 코드 크기 증가 통계적으로 최대 30% 증가 짧은 코.. 2021. 10. 18.
[c++] c++의 문자열 c++ 문자열 c++의 문자열 표현 방식 은 '2'가지 C 스트링 방식 - '\0'로 끝나는 문자 배열 char name1[6]={'G','r','a','c','e','\0'}; //name1은 문자열 "Grace" char name2[5]={'G','r','a','c','e'}; //name2는 문자열이 아니고 단순 문자 배열 2.string 클래스 이용 헤더 파일에 선언됨 다양한 멤버 함수 제공, 문자열 비교, 복사, 수정 등 c 스트링 방식으로 문자열 다루기 c 스트링으로 문자열 다루기 c 언어에서 사용한 함수 사용 가능: strcmp(), strlen(), strcpy() 등 이나 헤더 파일 include #include //또는 #include ... int n = strlen("hello");.. 2021. 10. 18.
[c++] cin의 개념 cin과 >> 연산자를 이용한 키 입력 cin: 표준 입력 장치인 '키보드'를 연결하는 c++ 입력 스트림 객체 '>>'연산자 스트림 추출 연산자(stream extracion operator) 헤더 파일에 스트림 추출 연산자로 재정의됨 입력 스트림에서 값을 읽어 변수에 저장 키를 칠 때 변수에 값 전달 cin의 특징 입력 버퍼를 내장하고 있음 키가 입력될 때까지 입력된 키를 입력 버퍼에 저장: 도중에 키를 입력하면 입력된 키 삭제 '>> 연산자': 키가 입력되면 비로소 cin의 입력 버퍼에서 키 값을 읽어 변수에 전달. 2021. 10. 18.
[c++] namespace 개념 namespace 개념 이름(indenrifier) 충돌이 발생하는 경우 여러 명이 서로 나누어 프로젝트를 개발하는 경우 오픈 소스 혹은 다른 사람이 작성한 소스나 목적 파일을 가져와서 컴파일하거나 링크하는 경우 해결하는데 많은 시간과 노력이 필요 namespace 키워드 이름 충돌 해결: 2003년 새로운 c++표준에서 도입 개발자가 자신만의 이름 공간을 생성할 수 있도록 함: 이름 공간 안에 선언된 이름은 다른 이름 공간과 별도 구분 이름 공간 생성 및 사용 namespace haha{ // haha 라는 이름 공간 생성 ... // 이 곳에 선언된 모든 이름은 haha 이름 공간에 생성된 이름 } 2021. 10. 18.
[c++] c++의 특징 C와 비교한 C++의 특징 c언어와의 호환성 c언어의 문법 체계 계승 객체 지향 개념 도입 캡슐화, 상속성, 다형성 1. 소프트웨어의 재사용을 통해 생산성 향상 2. 복잡하고 큰 규모의 소프트웨어의 작성, 관리, 유지보수 용이 c언어에 기능 추가 함수 중복(function overloading): 매개 변수의 개수나 타입이 다른 동일한 이름의 함수들 선언 디폴트 매개 변수(default parameter): 매개 변수에 디폴트 값이 전달되도록 함수 선언 참조와 참조 변수(reference): 하나의 변수에 별명을 사용하는 참조 변수 도입 참조에 의한 호출(call-by-reference): 함수 호출 시 참조 전달 new/delete 연산자: 동적 메모리 할당/해제를 위해 new와 delete 연산자 도.. 2021. 10. 18.
[flutter] 4개 이상의 BottomNavagationBar 사용하기 문제점 BottomNavigationBar는 무조건 2개 이상의 item을 추가해야 하며, 3개까지는 별다른 옵션을 추가해주지 않아도 상관 없다. 하지만 4개 이상의 item을 추가할 시 위치가 이상하게 보이는 문제가 발생 한다. 해결방안 BottomNavigationBar에 type: BottomNavigationBarType.fixed을 추가. bottomNavigationBar: BottomNavigationBar( type: BottomNavigationBarType.fixed, // item이 4개 이상일 경우 추가 ... ), 2021. 10. 17.
[flutter] BottomNavigationBar 사용하기 바텀네비게이션 바 구현 import 'package:flutter/material.dart'; class TabPage extends StatefulWidget { @override _TabPageState createState() => _TabPageState(); } class _TabPageState extends State { int _selectedIndex=0; List _pages=[ Text('page1'),Text('page2'),Text('page3') ]; @override Widget build(BuildContext context) { return Scaffold( body: Center(child:_pages[_selectedIndex]), bottomNavigationBar: .. 2021. 10. 17.
[flutter] Tabbar 구현하기 코드 import 'package:flutter/material.dart'; void main() => runApp(TabBarDemo()); class TabBarDemo extends StatelessWidget { @override Widget build(BuildContext context) { return MaterialApp( /** * Tab 사용법 * 스크린을 TabController 위젯으로 구성함 * TabBar: 사용할 탭을 구성. appBar의 bottom으로 구현 * TabBarView: 탭이 선택될 시 디스플레이할 컨텐트 구성. body로 구현 */ home: DefaultTabController( // 탭의 수 설정 length: 3, child: Scaffold( appBar.. 2021. 10. 17.
[flutter] XML 파싱하기 Xml 파싱 하기 install 참고 에서 최신 버전을 확인한다 xml: ^5.1.2 import import 'package:xml/xml.dart'; Use XmlDocument? XmlData; void getXmlData() async { try { http.Response response = await http.get( Uri.parse( '주소', ), ); XmlData = XmlDocument.parse(response.body); final wantData = XmlData!.findAllElements('원하는 값'); return(XmlData); } catch (e) { print('url 정보 불러오기 실패'); } } 2021. 10. 17.