Рубрики

Const функции-члены в C ++

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

const Class_Name Object_name;
  • Когда функция объявляется как const, она может вызываться для любого типа объекта, объекта const, а также неконстантных объектов.
  • Всякий раз, когда объект объявляется как const, он должен быть инициализирован во время объявления. однако инициализация объекта при объявлении возможна только с помощью конструкторов.

Функция становится const, когда в объявлении функции используется ключевое слово const. Идея const-функций не в том, чтобы позволить им изменять объект, для которого они вызываются. Рекомендуется сделать как можно больше функций постоянными, чтобы избежать случайных изменений объектов.

Ниже приведен простой пример функции const.

#include<iostream>

using namespace std;

  

class Test {

    int value;

public:

    Test(int v = 0) {value = v;}

      

    // Мы получаем ошибку компилятора, если добавляем строку наподобие "value = 100;"

    // в этой функции.

    int getValue() const {return value;}  

};

  

int main() {

    Test t(20);

    cout<<t.getValue();

    return 0;

}

Выход:

20

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

Например, следующая программа имеет ошибки компилятора.

#include<iostream>

using namespace std;

  

class Test {

    int value;

public:

    Test(int v = 0) {value = v;}

    int getValue() {return value;}

};

  

int main() {

    const Test t;

    cout << t.getValue();

    return 0;

}

Выход:

 passing 'const Test' as 'this' argument of 'int 
Test::getValue()' discards qualifiers

Давайте посмотрим на другой пример:

// Демонстрация постоянного объекта,
// показать, что постоянный объект может только
// вызов константной функции-члена
#include<iostream>

using namespace std;

class Demo

{

    public:

    void showMessage()

    {

        cout<<"Hello World We are Tushar, "

        "Ramswarup, Nilesh and Subhash Inside"

        " showMessage() Function"<<endl;

    }

    void display()const

    {

        cout<<"Hello world I'm Rancho "

        "Baba Inside display() Function"<<endl;

    }

};

int main()

{

    const Demo d1;

    //d1.showMessage(); Ошибка произошла, если раскомментировать.

    d1.display();

    return(0);

}

OUTPUT : Hello world I'm Rancho Baba Inside display() Function

Пожалуйста, пишите комментарии, если вы обнаружите что-то неправильное или вы хотите поделиться дополнительной информацией по обсуждаемой выше теме.

Рекомендуемые посты:

Const функции-члены в C ++

0.00 (0%) 0 votes