类与对象中const修饰成员函数

简介: 类与对象中const修饰成员函数

常函数:

  • 成员函数后加const后我们称这个函数为常函数
  • 常函数内不可修改成员属性
  • 成员属性生命是加关键字mutable后,在常函数中依然可以修改

常对象:

  • 声明对象前加const称该对象为常对象
  • 常对象只能调用常函数

常函数代码演示:

class Person
{
public:
    void showPerson() const
    {
        m_B = 100;
        //this->m_A = 100;
        //this=NULL   //this指针的指向不能修改
    }
    int m_A;
    mutable int m_B;  //特殊变量,即使在常函数中,也可以修改这个值
};
void test01()
{
    Person p;
    p.showPerson();
}
int main()
{
    test01();
    return 0;
}

常对象代码演示:

class Person
{
public:
    void showPerson() const
    {
        m_B = 100;
        //this->m_A = 100;
        //this=NULL   //this指针的指向不能修改
    }
    void func()
    {
    }
    int m_A;
    mutable int m_B;  //特殊变量,即使在常函数中,也可以修改这个值
};
void test02()
{
    const Person p;  //在对象前加const,变为常对象
    //p.m_A = 100;  //报错
    p.m_B = 100;     //m_B是特殊值,在常对象下也可以修改
    //常对象只能调用常函数
    p.showPerson();
    //p.func() //常对象 不可以调用普通成员函数,因为普通成员函数可以修改属性
}
int main()
{
    test02();
    return 0;
}
目录
相关文章
|
4月前
|
编译器 C++
【C++】详解初始化列表,隐式类型转化,类静态成员,友元
【C++】详解初始化列表,隐式类型转化,类静态成员,友元
|
5月前
|
编译器 C++
【C++】类和对象③(类的默认成员函数:赋值运算符重载)
在C++中,运算符重载允许为用户定义的类型扩展运算符功能,但不能创建新运算符如`operator@`。重载的运算符必须至少有一个类类型参数,且不能改变内置类型运算符的含义。`.*::sizeof?`不可重载。赋值运算符`=`通常作为成员函数重载,确保封装性,如`Date`类的`operator==`。赋值运算符应返回引用并检查自我赋值。当未显式重载时,编译器提供默认实现,但这可能不足以处理资源管理。拷贝构造和赋值运算符在对象复制中有不同用途,需根据类需求定制实现。正确实现它们对避免数据错误和内存问题至关重要。接下来将探讨更多操作符重载和默认成员函数。
|
6月前
|
编译器 C++
【C++】类与对象(static、explicit、友元、隐式类型转换、内部类、匿名对象)
【C++】类与对象(static、explicit、友元、隐式类型转换、内部类、匿名对象)
32 2
|
存储 编译器 C语言
【C++基础】类与对象(中):默认成员函数、构造函数、析构函数、拷贝构造、赋值重载函数……
【C++基础】类与对象(中):默认成员函数、构造函数、析构函数、拷贝构造、赋值重载函数……
86 0
|
6月前
|
C++
C++——类和对象(初始化列表、匿名对象、static成员、类的隐式类型转换和explicit关键字、内部类)
C++——类和对象(初始化列表、匿名对象、static成员、类的隐式类型转换和explicit关键字、内部类)
|
编译器 C++
C++ 类与const关键字
C++ 类与const关键字
45 0
|
6月前
|
C++
c++中const修饰成员函数的问题
问题引入: 看下面这一段代码:
51 0
|
6月前
|
编译器
static关键字修饰成员变量与成员函数
1. static概念 声明 为static的类成员称为类的静态成员,用static修饰的成员变量,称为静态成员变量;用static修饰的成员函数,称为静态成员函数,都存放在堆区。 静态成员变量一定要在类外进行初始化。
117 0
C++中的const成员变量和成员函数
在类中,如果你不希望某些数据被修改,可以使用const关键字加以限定。const 可以用来修饰成员变量和成员函数。 const成员变量 const 成员变量的用法和普通 const 变量的用法相似,只需要在声明时加上 const 关键字。初始化 const 成员变量只有一种方法,就是通过构造函数的初始化列表,这点在前面已经讲到了,请猛击《C++初始化列表》回顾。 const成员函数(常成员函数) const 成员函数可以使用类中的所有成员变量,但是不能修改它们的值,这种措施主要还是为了保护数据而设置的。const 成员函数也称为常成员函数。 我们通常将 get 函数设置为常成员函数。
|
存储 编译器 C语言
【C++学习】类和对象 | 再谈构造函数 | 构造函数中的隐式类型转换 | static静态成员
【C++学习】类和对象 | 再谈构造函数 | 构造函数中的隐式类型转换 | static静态成员
84 0