Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
bearwoolfs
15 / 15 / 1
Регистрация: 10.01.2011
Сообщений: 275
#1

Переменный член - C++

11.10.2011, 11:53. Просмотров 358. Ответов 2
Метки нет (Все метки)

Здраствуйте. В классе обявлен переменный член itsA в привытном методе доступа. Можно ли его с помощью такой функции new*itsA=new int обявленной в конструкторе этого класса сделать указателем на динамическую область памяти??? И что будет при его перезагрузке будет ли он по прежнему динамичным ???
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.10.2011, 11:53
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Переменный член (C++):

Сохранить переменный член в области динамической памяти ???? - C++
Есть класс class Analiz { public: Analiz(); ~Analiz(); int A(){return itsA;} ...

Одномерные массивы. Найти максимальный член в массиве, начиная со второго член - C++
Как найти максимальный член в массиве, начиная со второго члена?

В последовательности а1,...,a30 поменять местами наибольший член и член с номером m. - C++
Даны натуральное число m, действительные числа а1,..,a30 (числа попарно различны). В последовательности а1,...,a30 поменять местами...

Поменять местами наибольший член последовательности и член с номером m - C++
Помогите в 4 пункте меню сделать вывод на консоль, в файл и защиту если сразу выбрать 4 пункт. #include <stdio.h> #include...

Если объект константный, означает ли это, что ни один его член-элемент или член-метод не изменится? - C++
Назрел такой вопрос: Если объект константный это означает, что ни один его член-элемент или член-метод не изменится или только некоторые из...

Член-ссылка на другой член класса - C++
Есть класс Dot с двумя членами - x и y. Требуется еще один класс, который хранит width i height, но реализация этого класса ничем не...

2
-=ЮрА=-
Заблокирован
Автор FAQ
11.10.2011, 12:59 #2
Ниже реализация класса CDynamic, осуществляющего переинициализацию своего privat-указателя
(реализовывал в меру того как понял задание)
CDynamic.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include <iostream>
using namespace std;
 
class CDynamic
{
private:
    void * lpPtr;
public:
    CDynamic(){lpPtr = NULL;}//Конструктор по умолчанию
    ~CDynamic()//Деструктор
    {
        if(lpPtr)
            delete [] lpPtr;
    }
    //Переставляет lpPtr на блок памяти lpMem
    //При этом если lpPtr указывал на какой то блок памяти
    //данный блок уничтожается delete [] lpPtr
    void SetMemPtr(void * lpMem = NULL)
    {
        if(lpPtr)
            delete [] lpPtr;
        lpPtr = lpMem;
    }
    void * GetPtr(){return lpPtr;}//Возвращает адрес lpPtr
};
main.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#include "CDynamic.h"
 
int main()
{
    long i,N;
    CDynamic ptr;
    std::cout<<"Enter Elements in INT ARRAY\n";
    std::cout<<"N = ";std::cin>>N;
 
    int * arrINT = new int[N];
    for(i = 0; i < N; i++)
        std::cout<<"arrINT["<<i<<"] = "<<(arrINT[i] = i)<<"\n";
    ptr.SetMemPtr((void *)arrINT);
    std::cout<<"POINTER TO arrINT : "<<arrINT<<"\n";
    std::cout<<"POINTER TO ptr    : "<<ptr.GetPtr()<<"\n";
 
    std::cout<<"Enter Elements in DOUBLE ARRAY\n";
    std::cout<<"N = ";std::cin>>N;
    double * arrDOUBLE = new double[N];
    for(i = 0; i < N; i++)
        std::cout<<"arrDOUBLE[i] = "<<(arrDOUBLE[i] = i)<<"\n";
 
    ptr.SetMemPtr((void *)arrDOUBLE);
    std::cout<<"arrINT[0] : "<<arrINT[0]<<"\n";
    std::cout<<"POINTER TO arrINT    : "<<arrINT<<"\n";
    std::cout<<"POINTER TO arrDOUBLE : "<<arrDOUBLE<<"\n";
    std::cout<<"POINTER TO ptr       : "<<ptr.GetPtr()<<"\n";
    system("pause");
    return 0;
}

Лог Release
--------------------Configuration: Dynamic - Win32 Release--------------------
Compiling...
main.cpp
Linking...

Dynamic.exe - 0 error(s), 0 warning(s)
0
Миниатюры
Переменный член  
rangerx
11.10.2011, 14:31     Переменный член
  #3

Не по теме:

Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
if(lpPtr)
delete [] lpPtr;
delete[] \ delete применяемый к void* это UB.

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.10.2011, 14:31
Привет! Вот еще темы с ответами:

Переменный оператор сравнения - C++
Добрый день. Интересует такой вопрос: возможно ли переменной присвоить значение оператора сравнения. Что-то типа такого: if (i==1) ...

Как задать переменный размер массива - C++
Как задать переменный размер массива?

Как проверить тип переменный, который получен через cin? - C++
Вообще как можно реализовать, чтобы юзер набрал число с типом десятичной или вещественного типа. Надо у знать что за тип, чтобы впихать...

Как проверить тип переменный, который получен через cin? - C++
Вообще как можно реализовать, чтобы юзер набрал число с типом десятичной или вещественного типа. Надо у знать что за тип, чтобы впихать...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.