C++ 常成员函数、常数据成员、常对象

常成员函数在声明和实现时都要带 const 关键字

常成员函数不能修改对象的数据成员,也不能访问类中没有用 const 声明的非常成员函数。

在任何函数中都不能对常数据成员赋值。对常数据成员初始化,只能通过构造函数初始化列表

常对象的数据成员在它的生存期内不会被改变,因此定义常对象时必须对其进行初始化。这里的初始化可以通过初始化列表完成,也可以通过构造函数函数体来完成。

class Person {
public:
    string name;
    Person() {
        name = "mollnn";
    }
};
int main() {
    const Person person;
}

常对象只能调用它的常成员函数,不能调用其他的普通成员函数。

对于常量成员函数的重载,常量对象调用常量成员函数,正常对象调用非常量成员函数。

原文地址:https://www.cnblogs.com/mollnn/p/12598987.html

时间: 2024-11-07 09:09:11

C++ 常成员函数、常数据成员、常对象的相关文章

mutable用于修改const成员函数中的成员变量

http://no001.blog.51cto.com/1142339/389840/ mutalbe的中文意思是“可变的,易变的”,跟constant(既C++中的const)是反义词. 在C++中,mutable也是为了突破const的限制而设置的.被mutable修饰的变量,将永远处于可变的状态,即使在一个const函数中. 我们知道,如果类的成员函数不会改变对象的状态,那么这个成员函数一般会声明成const的.但是,有些时候,我们需要在const的函数里面修改一些跟类状态无关的数据成员,

C/C++ 类成员函数指针 类成员数据指针

普通函数指针:  "return_type (*ptr_name)(para_types) " 类成员函数指针: "return_type (class_name::*ptr_name)(para_types)" 类数据成员指针: "type class_name::* ptr_name"; C/C++: 1 class Demo 2 { 3 public: 4 Demo():data(100) 5 { 6 7 } 8 int data; 9 i

让类成员函数指针成为可调用对象

类成员函数指针实践上是一个指针类型,不可直接通过调用运算符()作为可调用对象调用,一般调用该类成员函数指针需要指定该指针对应的对象. 一般情况下调用类成员函数指针: // a.h #ifndef A_H #define A_H #include <iostream> using std::cout; using std::endl; class A{ public:     void print(); }; #endif // a.cpp #include "a.h" vo

类的成员函数和普通成员函数的区别

区别1: 静态成员函数实际上是一个全局函数,不依赖一个类的对象. 而属于类,不创建对象也可调用,静态成员函数没有this指针. 普通成员函数依赖一个类的对象,也就是它有一个隐藏的调用参数(this)指针,必须指向一个类的对象. 区别2: 静态函数只能访问类中的静态成员变量: 区别3:: 如果成员函数想作为回调函数来使用,如创建线程等,一般只能将它定义为静态成员函数才行. 版权声明:本文为博主原创文章,未经博主允许不得转载.

C++类的成员函数(在类外定义成员函数、inline成员函数)

类的成员函数(简称类函数)是函数的一种,它的用法和作用和前面介绍过的函数基本上是一样的,它也有返回值和函数类型,它与一般函数的区别只是:它是属于一个类的成员,出现在类体中.它可以被指定为private(私有的).public (公用的)或protected(受保护的). 在使用类函数时,要注意调用它的权限(它能否被调用)以及它的作用域(函数能使用什么范围中的数据和函数).例如私有的成员函数只能被本类中的其它成员函数所调用,而不能被类外调用.成员函数可以访问本类中任何成员(包括私有的和公用的),可

static成员函数和static成员

C++的静态成员是和类关联的,它属于某个类,但是不属于某个特定的对象.静态成员变量只存储一份供所有对象共用.所以在所有对象中都可以共享它.使用静态成员变量实现多个对象之间的数据共享不会破坏隐藏的原则,保证了安全性还可以节省内存. 但是可以通过对象调用静态成员函数,虽然我们一般不会这么做: 1 class Point 2 { 3 public: 4 void init() 5 { 6 } 7 static void output() 8 { 9 } 10 }; 11 12 void main()

static成员函数和static 成员变量的作用

static 成员只属于类不属于具体的对象,1.当类的某些属性需要所有对象都能够统一公用一分内存的时候,就可以定于成静态成员变量2.静态成员函数可以直接使用类去调用,所有当需要查看类的静态成员变量属性的时候可以直接通过静态成员函数去调用,而不需要具体对象去调用 3.因为static 成员属于类,而不属于具体的对象,所有static成员函数不能使用this指针 原文地址:http://blog.51cto.com/wenxuehui/2089850

c++常对象和常成员函数

常对象: 定义常对象的一般形式为: 类名 const 对象名[(实参表列)]; 也可以把const写在最左面: const 类名 对象名[(实参表列)]; 二者等价. 常对象的所有成员值都不能变,必须先初始化,不能调用非const成员函数 const成员函数: void get_time( ) const ; //将函数声明为const 不能改变类中的成员值们可以访问,若非要改变,可以把成员变量设置为mutable. const是函数类型的一部分,在声明函数和定义函数时都要有const关键字 不

C++点滴----关于类常成员函数

关于C++中,类的常成员函数 声明样式为:   返回类型 <类标识符::>函数名称(参数表) const 一些说明: 1.const是函数声明的一部分,在函数的实现部分也需要加上const 2.const关键字可以重载函数名相同但是未加const关键字的函数 3.常成员函数不能用来更新类的成员变量,也不能调用类中未用const修饰的成员函数,只能调用常成员函数.即常成员函数不能更改类中的成员状态,这与const语义相符. 例一:说明const可以重载函数,并且实现部分也需要加const #in