0
点赞
收藏
分享

微信扫一扫

C++基础-常成员与常对象

勇敢的趙迦禾 2022-04-06 阅读 149

一、函数实参的保护

函数的形参如果用const修饰,在函数体中该形参为只读变量,不能修改。
C++中大量系统函数的形参均用const进行修饰,如:

int atoi(const char * str);//将数字串转换成整数
char * strcpy(char * to,const char * from);//保护源串from

只读形参用const修饰,一方面保护实参,避免错误,使程序健壮,另一方面增强程序可读性。

二、常对象

  • 常对象不能调用任何类的非常成员函数,不能被修改。
  • 只有常成员函数可以访问类的常对象,但也不能修改常对象;
  • const对象不能被赋值,必须在定义时由构造函数初始化;
  • 常对象只能访问常成员函数;
    定义:

三、常数据成员

常数据成员的定义与一般常变量的定义方式相同,只是他的定义必须在类体中
必须进行初始化,通过构造函数的初始化列表进行,不能被修改。

#include<iostream>
using namespace std;

class A
{
    private:
        const int& r;//常引用数据成员
        const int a;//常数据成员
        static const int b;//静态常数据成员;类内声明,类外定义
    public:
    //常数据成员只能通过初始化列表获得初值
        A(int i):a(i),r(a)
        {
            cout<<"constructor"<<endl;
        }
        void display()
        {
            cout<<a<<","<<b<<","<<r<<endl;
        }
};
const int A::b=3;
int main()
{
    A a1(1);
    a1.display();
    A a2(2);
    a2.display();
    return 0;
}

四、常成员函数

用于访问类的常对象的函数为常成员函数,也可以访问一般对象,定义格式:

  • 常成员函数的实现也要带有const关键字
  • 不能更新对象的数据成员
举报

相关推荐

0 条评论