Студопедия Главная Случайная страница Обратная связь

Разделы: Автомобили Астрономия Биология География Дом и сад Другие языки Другое Информатика История Культура Литература Логика Математика Медицина Металлургия Механика Образование Охрана труда Педагогика Политика Право Психология Религия Риторика Социология Спорт Строительство Технология Туризм Физика Философия Финансы Химия Черчение Экология Экономика Электроника

Укажите способы доступа к полям и методам класса





. - позволяет ссылке на объект получить доступ к полю структуры (класса).

Пример:
struct strct{
int info;
};
void main(){
strct x;
x.info=7;
}

->; - позволяет ссылке на объект получить доступ к полю структуры (класса).
struct strct{
int info;
};
void main(){
strct *x=new strct;
x->info=7;
}

94. Зачем нужны методы с модификатором const? и как они используются.

Когда метод не изменяет поля объекта, для которого он вызван, желательно в конце написать const

void func () const { …}

пример из перегрузки операторов:

inline Chislo Chislo::operator + (const Chislo & c) const

{

Chislo m;

m.mi = mi + c.mi;

m.ma = ma + c.ma;

return m;}

95. Как определить константный объект? Какие методы доступа применимы к нему?

Если объект класса объявлен с модификатором const, он становится недоступным для изменения. Это означает, что для такого объекта можно вызвать только константные методы, поскольку только они гарантируют, что объект не будет изменен.

int main()

{ const MyClass obj;

… }

96. Какой параметр скрыто передается методу класса? Опишите использование ключевого слова this.

Функции-члены класса (за исключением статических) получают в дополнение к списку параметров еще и неявный указатель this - адрес "своего" объекта, того, с которым они вызваны и поля которого они должны обрабатывать.

Ключевое слово "this" представляет собой указатель на текущий объект класса. Методы класса могут использовать ключевое слово this чтобы получить указатель на объект для которого вызван данный метод. Указатель this представляет собой постоянную величину, мы не можем изменять его значение в своей программе.

class my

{ int a;

public:

my(могут быть параметры); //конструктор- без типа, совпадает с именем класса

void b() { this->a=0; }

};

 

97. Можно ли построить класс без конструктора? Как в этом случае описать объекты класса?

Если в классе не определить конструктор (хотя бы один), тогда компилятор создаст конструктор по умолчанию. Можно будет дать возможность пользователю изменять переменные самостоятельно, или же определить функции, которые будут изменять значения переменных.

Определить конструктор в закрытой части можно. В этом случае доступ к конструктору может получить только дружественный класс, который должен быть объявлен как дружественный в объявлении данного класса.

98. Когда вызывается конструктор? Наследуется ли конструктор? Укажите синтаксис списка инициализаций при вызове конструктора. Можно ли определить конструктор в закрытой секции? Можно ли явно вызвать конструктор?

Конструктор вызывается в момент создания объекта. Конструктор не наследуется.

class my

{ const int a,b,c;

public:

my(могут быть параметры): a(5),b(3),c(4){};

};

Определить конструктор в закрытой части можно. Оно компилится. Вот тока ни один объект создать не получится.

Нет, вызвать явно конструктор нельзя.

 

99. Определите понятие «дружественная функция».

Это функция, которая не является методом класса, но имеет доступ к его закрытой части. Дружественная функция может обращаться ко всем его элементам, включая private и protect. Одна и та же функция может быть дружественной для двух или более классов.

class point

{public:

friend void point::Clear(point*); // Функция Clear объявляется дружественной классу point

private:

int m_x;

int m_y; };

void Clear(point* ptrPoint) // Функция Clear

{ ptrPoint->m_x = 0; // Обращаемся к элементам класса, объявленным как private

ptrPoint->m_y = 0;

return;}

void main()// Главная функция

{ point pointTestPoint;

Clear(&pointTestPoint); // Вызываем дружественную функцию

}

100. Опишите синтаксис деструктора.Зачем виртуализировать деструктор? Можно ли наследовать деструктор?Можно ли явно вызвать деструктор?

class A

{

public:

~A();

}

 

A:: ~A() { …}

Деструктор тоже ничего не возвращает и имеет название, совпадающее с именем класса, но перед ним стоит ~. Деструктор всегда ничего не принимает. Когда имеется иерархия классов, невозможно точно определить, куда указывает указатель. И тогда операция delete не будет работать. Объявив деструктор виртуальным, мы гарантируем, что для каждого производного класса будет замещен деструктор и объект правильно удалится.

Пример:

 

class Base

{ public:

~Base() //невиртуальный деструктор

//virtual ~Base()// виртуальный дестркутор - закоментен

{ cout << “Base удален\n”; }

};

class Derv: public Base

{ public:

~Derv()

{ cout << “Derv удален\n”; }

};

int main()

{ Base* pBase = new Derv;

delete pBase;

return 0;

}

Результат программы: Base удален //результат ошибочен, к такому результату привело то, что деструктор базового класса в приведенном листинге не виртуальный. Исправить это можно, заккоментировав первую строчку определения дестркуктора и активизировать другую.

Результатом будет: Derv удален

Base удален

Наследовать деструктор нельзя. Явно вызвать деструктор вызвать …

101. Все ли операции могут быть перегружены? Можно ли перегрузить операции для базовых стандартных типов данных?

Следующие операции не могут быть перегружены:

  • операции доступа к членам структуры или класса (.)
  • операция разрешения (::)
  • операция условия (?:)
  • операция ->

Кроме того, нельзя создавать новые операции (например, нельзя определить новую операцию возведения в степень **, которая есть в некоторых языках) и пытаться их перегрузить; перегружать можно только существующие операции.

Для базовых стандартных типов тоже нельзя ничего перегрузить.

102. Зачем используют ключевое слово operator?

Для перегрузки операторов.

Сначала пишут возвращаемый тип, зачем ключевое слово operator, затем саму операцию (напр. ++) и наконец список аргументов, заключенных в скобки. Такой синтаксис говорит компилятору о том, что если операнд принадлежит классу, то нужно вызвать функцию с таким именем, встретив в тексте программы эту операцию. (пример: Chislo operator++();)







Дата добавления: 2015-04-19; просмотров: 758. Нарушение авторских прав; Мы поможем в написании вашей работы!




Расчетные и графические задания Равновесный объем - это объем, определяемый равенством спроса и предложения...


Кардиналистский и ординалистский подходы Кардиналистский (количественный подход) к анализу полезности основан на представлении о возможности измерения различных благ в условных единицах полезности...


Обзор компонентов Multisim Компоненты – это основа любой схемы, это все элементы, из которых она состоит. Multisim оперирует с двумя категориями...


Композиция из абстрактных геометрических фигур Данная композиция состоит из линий, штриховки, абстрактных геометрических форм...

Меры безопасности при обращении с оружием и боеприпасами 64. Получение (сдача) оружия и боеприпасов для проведения стрельб осуществляется в установленном порядке[1]. 65. Безопасность при проведении стрельб обеспечивается...

Весы настольные циферблатные Весы настольные циферблатные РН-10Ц13 (рис.3.1) выпускаются с наибольшими пределами взвешивания 2...

Хронометражно-табличная методика определения суточного расхода энергии студента Цель: познакомиться с хронометражно-табличным методом опреде­ления суточного расхода энергии...

Измерение следующих дефектов: ползун, выщербина, неравномерный прокат, равномерный прокат, кольцевая выработка, откол обода колеса, тонкий гребень, протёртость средней части оси Величину проката определяют с помощью вертикального движка 2 сухаря 3 шаблона 1 по кругу катания...

Неисправности автосцепки, с которыми запрещается постановка вагонов в поезд. Причины саморасцепов ЗАПРЕЩАЕТСЯ: постановка в поезда и следование в них вагонов, у которых автосцепное устройство имеет хотя бы одну из следующих неисправностей: - трещину в корпусе автосцепки, излом деталей механизма...

Понятие метода в психологии. Классификация методов психологии и их характеристика Метод – это путь, способ познания, посредством которого познается предмет науки (С...

Studopedia.info - Студопедия - 2014-2025 год . (0.011 сек.) русская версия | украинская версия