nsg Опубликовано 26 марта, 2010 Автор Жалоба Поделиться Опубликовано 26 марта, 2010 Классы и указатели На прошлых уроках мы видели только один способ объявления экземпляров класса - а именно мы писали что-то вроде:CMyClass z; Вообще же говоря экземпляры класса лучше во многих случаях заводить не в стеке, а в куче (at heap) Это, в частности, связано с тем, что стек - вещь довольно-таки ограниченная по объему, классы же часто представляют из себя довольно-таки большие и сложные объекты, и если вы будете размещать в стеке что-то вроде массива экземпляров класса, то объема стека просто может не хватить (хотя, конечно, для учебных программм это случится навряд ли). Так же как и для встроенных типов данных для размещения экземпляра класса в куче использется оператор new. Именно он и занимается выделением памяти. Вот пример:CMyClass * z;z = new CMyClass; // Непосредственное выделение памяти. Конструктор класса при этом вызовется на второй строке, т. е. в операторе new. Эти два оператора можно объединить:CMyClass * z = new CMyClass; // Непосредственное выделение памяти. Если в классе есть конструктор с параметрами, то он вызывается примерно так:// Вызов конструтора с одним параметром.CMyClass * z = new CMyClass(22);// Вызов конструтора с двумя параметрами.CMyClass * z = new CMyClass(22, 44); Еще одно отличие между двумя способами создания экземпляра класса (в стеке или в куче) - это вызов методов класса. Если при создании экземпляра в стеке между именем экземпляра и именем метода используется точка, то при создании экземпляра класса в куче (т. е. через оператор new) используется стрелочка. Вот пример:CMyClass * z = new CMyClass;z->SomeMethod(); Ссылка на комментарий Поделиться на другие сайты Поделиться
programmer Опубликовано 9 июня, 2010 Жалоба Поделиться Опубликовано 9 июня, 2010 ФункцииФункция - это совокупность объявлений и операторов, обычно предназначенная для решения определенной задачи. Каждая функция должна иметь имя, которое используется для ее объявления, определения и вызова. В любой программе на С++ должна быть функция с именем main (главная функция), именно с этой функции, в каком бы месте программы она не находилась, начинается выполнение программы. Синтаксис функции:[тип] имя-функции ([список-параметров]) {тело-функции}Пример:void main() В данном случае void main(){} - это процедура, потому что, она не возвращает никакого значения,(void - пустой) функция обязяна возвращать значение - int main(){return 0;} или например, с передачей аргументов командной строки - int main(int argc, char* argv[]){return 0;} Ссылка на комментарий Поделиться на другие сайты Поделиться
programmer Опубликовано 9 июня, 2010 Жалоба Поделиться Опубликовано 9 июня, 2010 Ещё по поводу указателей, готовая прога, подсчитывает количество символов в строке, написана для того чтобы, показать как указатели работают с памятью. #include "stdafx.h"#include <iostream.h> int main(int argc, char* argv[]){ char string[] = "good string"; // объявляем строку (массив символов, которые имеют один тип данных char) char* pointer = NULL; // объявляем указатель типа char, инициализируем нулём (хороший тон) int counter = 0; // объявляем переменную счётчик, для подсчёта итераций(прохождений) цикла pointer = string; // устанавливаем указатель на нулевой элемент массива (строки) while(*pointer != NULL) // *p - указатель разыменован(т.е. по данному адресу берёт значение), // и двигаем указатель к концу строки, пока он не встретит '\0' { pointer++; counter++; } cout << endl << "The string has a " << counter << " symbols " << endl << endl; return 0;} Ссылка на комментарий Поделиться на другие сайты Поделиться
seroyan Опубликовано 10 августа, 2010 Жалоба Поделиться Опубликовано 10 августа, 2010 Всем привет! Не подумайте, что я пришел пофлудиться, но я думал, что плюсы для другого идут. а в МТ4 МКюЛ4 ? Что пишеться на плюсах и для чего? Ссылка на комментарий Поделиться на другие сайты Поделиться
Mr.Bags Опубликовано 16 августа, 2010 Жалоба Поделиться Опубликовано 16 августа, 2010 Всем привет! Не подумайте, что я пришел пофлудиться, но я думал, что плюсы для другого идут. а в МТ4 МКюЛ4 ? Что пишеться на плюсах и для чего? Формулировка сути вопроса лично мне не до конца ясна. сделайте уточнение. Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения