Классы в С++

Рубрика: C++, Дата: 26 February, 2013, Автор:
Tags:

В С++ класс это можно сказать тип, как бы новый тип, тип struct это тоже класс? типы int, double, это тоже классы.

В С++ можно создавать эффективные пользовательские типы, например можно создать тип Date для дат с перегрузкой операторов, это позволяет нам работать с новыми типами на  прямую прибавлять их, отнимать, сравнивать и.т.д.

Что еще сказать? Ну скажу еще, что есть функции-члены класса, от допустим бывают функции и члены класса, как закрытые, так и открытые, по умолчанию определяются закрытые члены класса.

Вызов закрытых членов класса напрямую через объект запрещен например:

class b
{
  int a;
public:
  int d;
};

int main()
{
  b a;
  a.a//error tak kak a zakrutui chlen klacca
  a.b//mojno

  return 0;
}

 

Дальше рассмотрим как можно вызывать константные функции из каких объектов

Допустим есть у нас константный объект из него мы вызываем константный метод, он не меняет нам объект, значит его можно вызвать (объект const нельзя менять).

 

class a
{
  int b;
  const void c()
  {
     b++;//error - nel6z9 modificirovat6 ob6ekt iz const function
  }
}

 

Теперь возьмем не константный объект и вызовем из него константный метод – да ничо страшного не произойдет можно вызвать. Теперь вызовем не константный метод, так как объект не const, то и методы не const можно вызывать, нечего страшного не произойдет, если они возьмут да и изменят состояние объекта.

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

 

Теперь поговорим о константных методах класса.

Константные методы класса объявленные в определении должны быть объявлены как константные и в определении класса (после определения нужно ставить const)

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

Варианты обращения к статическим методам класса

Допустим у нас есть класс Date и у него метод set_default() статический находится в пространстве имен Chrono как к нему обращаться? Приведите три способа! Код:

namespace Chorno
{
  class Date
  {
     .......
     static void set_default();
     .......
  };
}

к нему можно обратиться

1. Chrono::Date::set_default();

2. using Chorno::Date; Date::set_default();

3. using namespace Chrono; Date::set_default();

 

 

rss