Мегаобучалка Главная | О нас | Обратная связь


Статические и константные члены класса.



2019-08-13 524 Обсуждений (0)
Статические и константные члены класса. 0.00 из 5.00 0 оценок




Статические члены класса

Переменные и члены класса, объявленные с модификатором доступа static, называются статическими членами класса. Cтатические переменные и методы доступны без создания объекта данного класса. Имя статической переменной квалифицируется именем класса с использованием операции принадлежности :: , а не именем экземпляра класса.

Например:

class A { public: static int iStat; };int main(int argc, char* argv[]) { A:: iStat = 123;}

Статические методы могут вызывать и использовать только другие статические методы и статические переменные. Из статического метода нельзя выполнять вызов не статического метода - члена класса.

Статическую переменную можно рассматривать как аналог глобальной переменной, которая связана с конкретным классом.

Часто статические переменные называют переменными класса, а не статические переменные - переменными экземпляра.

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

Например:

class A{ public: static int iStatVar; };int main(int argc, char* argv[]){int A:: iStatVar = 0;int *piStatVar = &A:: iStatVar;}

При использовании статических переменных указатели всегда являются указателями на существующий тип (в данном примере на тип int ), а не на тип класса.

Для того чтобы создать и использовать статическую переменную, следует:

1. Объявить (как правило, в заголовочном файле) статическую переменную как член класса.

Например: static int iStat;.

2. Для выделения памяти под эту переменную ее повторно следует объявить в модуле компиляции, в котором она будет использоваться, квалифицируя имя статической переменной именем класса.

Например: int A::iStat;

3. Выполнить инициализацию статической переменной (по умолчанию статическая переменная типа int имеет значение 0 ).

Например: A::iStat=123;

Константные функции-члены класса

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

class X  { private: int n; public: int f() const; };   int X::f() const  
{ return n++; } // Ошибка – попытка изменить значение члена класса в константной функции

Константную функцию-член класса можно вызвать как для константного, так и для неконстантного объекта, в то время как неконстантную функцию можно вызвать только для объекта, не являющегося константой.

 

 

Строки в C#.

Строка в C# — это массив знаков, объявленный с помощью ключевого слова string. Строковый литерал объявляется с помощью кавычек, как показано в следующем примере.

string s = "Hello, World!";

Переприсваивание

Строки можно целиком переприсваивать:

string s1 = "Hello";

string s2 = s1; //переприсваиваем

Объединение строк

Можно объединять строки с помощью оператора +, как показано в следующем примере:

string s1 = "orange";

string s2 = "red";

s1 += s2;

Console.WriteLine(s1); // напечатается "orangered"

Escape-знаки

Строки могут содержать escape-знаки, такие как "\n" (новая строка) и "\t" (табуляция). Пример:

string hello = "Hello\nWorld!";

Console.WriteLine(hello);

/* Напечатается

Hello

World!

*/

string s = "чтобы вставить \"кавычки\" в строку используем обратный слэш";

Console.WriteLine(s);

Если требуется добавить в строку обратную косую черту, перед ней нужно поставить еще одну обратную косую черту. Следующая строка:

string filePath = "\\\\My Documents\\";

Console.WriteLine(filePath);

/* Напечатается:

\\My Documents\

*/

Точные строки: символ @

Символ @ служит для того, чтобы конструктор строк пропускал escape-знаки и переносы строки. Следующие две строки являются идентичными:

string p1 = "\\\\My Documents\\My Files\\";

string p2 = @"\\My Documents\My Files\";

Чтобы поставить в точной строке знак двойных кавычек, нужно использовать по два таких знака, как показано в следующем примере:

string s = @"You say ""goodbye"" and I say ""hello""";

Доступ к отдельным знакам

Квадратные скобки [] служат для доступа к отдельным знакам в объекте string, но при этом возможен доступ только для чтения:

string str = "test";

char x = str[2]; // x = 's';

string s5 = "Printing backwards";

for (int i = 0; i < s5.Length; i++)

Console.Write(s5[s5.Length - i - 1]);

// напечатается "sdrawkcab gnitnirP"

Извлечение подстрок

Для извлечения подстроки из строки используется метод Substring.

string s3 = "Visual C# Express";

string s4 = s3.Substring(7, 2);

Console.WriteLine(s4);

// напечатается "C#"

Замена по образцу

Для замены подстроки в строке по образцу используется метод Replace.

string s3 = "Visual C# Express";

string s5 = s3.Replace("C#", "Basic");

Сonsole.WriteLine(s5);

// напечатается "Visual Basic Express"

Смена регистра

Чтобы изменить регистр букв в строке (сделать их заглавными или строчными) следует использовать ToUpper()илиToLower(), как показано в следующем примере:

string s6 = "АлтГТУ";

Console.WriteLine(s6.ToUpper());

// Напечатается АЛТГТУ

Console.WriteLine(s6.ToLower());

// Напечатается алтгту

Console.WriteLine(s6);

// Напечатается АлтГТУ

Сравнения

Самый простой способ сравнения двух строк — использовать операторы == и !=, осуществляющие сравнение с учетом регистра:

string color1 = "red";

string color2 = "green";

string color3 = "red";

if (color1 == color3)

Console.WriteLine("Строки равны");

if (color1 != color2)

Console.WriteLine("Строки не равны");

Не допускается использование >,<,>=,<= для сравнения строк. Для строковых объектов существует метод CompareTo(), возвращающий целочисленное значение, зависящее от того, что одна строка может быть меньше (<), равна (==) или больше другой (>). При сравнении строк используется значение Юникода, при этом значение строчных букв меньше, чем значение заглавных. Дополнительные сведения о правилах сравнения строк см. в разделах CompareTo().

string string1 = "ИИТ";

string string2 = "Иит";

int result = string1.CompareTo(string2);

if (result > 0)

Console.WriteLine("{0} больше чем {1}", string1, string2);

else if (result == 0)

Console.WriteLine("{0} равно {1}", string1, string2);

else if (result < 0)

Console.WriteLine("{0} меньше чем {1}", string1, string2);

// Напечатается ИИТ больше чем Иит

 

 

Инкапсуляция.

Инкапсуляция (программирование) - это использование модификаторов доступа с целью сокрытия частей программного кода от конечного пользователя. Под ним, в свою очередь, подразумевается разработчик или наследующий объект. Суть понятия "инкапсуляция" Дефиниция определяет, что под инкапсуляцией подразумевается сокрытие всего или части программного кода. Суть же понятия "инкапсуляция" заключается в манипулировании модификаторами доступа. Это означает, что разработчик сам решает, какие свойства, методы и классы будут открыты классу-клиенту, а какие - скрыты. Модификаторы доступа Существуют такие модификаторы доступа, которыми, в числе прочих, способна манипуляривать инкапсуляция (программирование Java): public ("паблик" - публичный, открытый, доступ) - общий доступ как для текущих объектов и классов, так и для внешнего мира; private ("прайват" - приватный, частный, скрытый доступ) - закрытый доступ, суть которого полностью противоположна предыдущему. Обеспечивает доступ только из текущего класса; protected ("протектед" - защищенный, полускрытый, доступ) - доступ для текущего класса и производных от него; по умолчанию - неуказанный модификатор доступа подразумевает, что поле/метод видно для всего текущего пакета классов. В языке C# ("Си Шарп"), помимо указанных (исключая последний), есть еще такие модификаторы: internal ("интернал" - внутренний доступ) - общедоступность в текущем сборе, закрытый доступ по всем остальным случаям; internal protected ("интернал протектед" - внутренний защищенный доступ) - объединение двух модификаторов в один, в котором проявляются свойства обоих из них. Роль инкапсуляции Механизм инкапсуляции позволяет исключить внешнее влияние на программный код и неверное использование заложенных в нем данных. Это происходит за счет объединения кода и данных в одно целое.

 



2019-08-13 524 Обсуждений (0)
Статические и константные члены класса. 0.00 из 5.00 0 оценок









Обсуждение в статье: Статические и константные члены класса.

Обсуждений еще не было, будьте первым... ↓↓↓

Отправить сообщение

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



©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (524)

Почему 1285321 студент выбрали МегаОбучалку...

Система поиска информации

Мобильная версия сайта

Удобная навигация

Нет шокирующей рекламы



(0.008 сек.)