ОББН лекция 2. Си программалау тіліне кіріспе Жоспар
Скачать 128.11 Kb.
|
3. Жаңа new және delete операторларын құруC++ ортасы операторларды қайта анықтауға мүмкіндік береді. Сондықтан new және delete операторларын қайта анықтауға болады. Мысалы, фирманың қажеттілігі үшін жадыда100 байт орын бөлу керек. Кейіннен осы жадыны delete операторымен тазартқан уақытымызда, буфер азат етіледі, яғни біздің сақтаған 100 байт информациямыз жойылады. Егер корпоративті шпион (немесе программист) сіздің компьютеріңізге кіре алатын болса, онда 100 байт құпия информацияны оқи алатын болады. Сіздің программаңыз deletе операторын қайта анықтау арқылы, буферді нульмен немесе басқа керексіз информациямен толтырып тек содан кейін ғана азат етуге болады. Келесі программа MYDELETE.CPP deletе операторын қайта анықтайды. Ол алдымен 100 байт информацияны жазып алады, одан кейін жадыны орындау кезеңінің кітапханасының функциясын free қолданып азат етеді #include #include #include static void operator delete(void *pointer) { char*data=(char*)pointer; inti; for(i=0;i<100;i++)data[i]=0; cout<<"Секретвбезопасности!"< } void main(void) { char*pointer=newchar[100]; strcpy(pointer,"Секретымоейкомпании"); deletepointer; } Программа іске қосылғанда new операторының көмегі арқылы жолдық массивке орын бөлінеді. Одан кейін жадыны азат етуге қайта анықталған delete операторы қоланылады. Функцияның delete ішінде оператор pointer айнымалысының мәнін символьдық жол көтсеткішіне меншіктейді: char *data = (char *) pointer; Мұнда, (char *) символы типтерді келтіру операторы C++ компиляторға хабарлама беру үшін қажет. Ол void типті көрсеткішке char типті көрсеткішті меншіктейді. Егер типтерді сәйкестендіру жазылмаса, онда программа компиляциядан өтпейді. Одан кейін функция нульдерді 100 байт буфер көшіреді және жадыны азат етеді, орындау кезеңінің кітапханасының функциясын free қолданып азат етеді Келесі программа NEW_OVER.CPP C++ new операторын қайта анықтайды. Бұл жерде қайта анықталған функция символьдық жолды "Учимся программировать на языке C++!" бөлінетін жадының басына көшіреді: #include #include #include static void *operator new(size_t size) { char*pointer; pointer=(char*)malloc(size); if(size > strlen( "Учимся программировать на языке C++!")) strcpy(pointer, "Учимся программировать на языке C++!"); return(pointer); } void main(void) { char*str=newchar[100]; cout< Көріп отырғанымыздай new функциясы жадына бөлуге орындау кезеңінің кітапханасының функциясын malloc қолданады. Егер бөлінген жады жолдық мәнді "Учимся программировать на языке C++!"сақтауға жеткілікті болса, орындау кезеңінің кітапханасының функциясын strcpy қолданады. Егер new операторы жағыға сұранысты қанағат ете алмаса, онда үнсіз келісім бойынша сәйкес көрсеткішке NULL мәнін меншіктейді. Егер программаға басқа жағдайлар қажет болса, онда операторларда қайта анықтауға болады. C++ тілінде программаларда new және delete операторларын қайта анықтауға болады. Бірақ, алдымен қанша азат жады бар екенін біліп орындау кезеңінің кітапханасының функциясын қолдану қажет. Класс. Конструктор және деструктор. Жоспар 1. Класстар C++2.Конструктор және деструктор3. Конструкторды қайта анықтау4. Деструктор1. Класстар C++Объектіге-бағытталған C++ программалау тілінде класс негізгі құралдардың бірі болып табылады. Класс –структура ұғымына өте ұқсас, онда белгілі бір объектілер жайында элементтер мен оларға қолданылатын іс-әрекеттер(тәсілдер) бірге орналасады. Объект мән ретінде қарастырылады. C++ тілінде класс программада объектінің барлық атрибуттарын анықтайды.Объект жайында мәліметтерді бір жерге жинау программалау процесін қысқартуға және оның кодын қайта қолдануға мүмкіндік береді. |