网站建设资讯

NEWS

网站建设资讯

c++...常量对象与const成员函数-创新互联

笔者为计科大一菜鸡,此文章的初衷只是为了督促自己做点笔记,内容仅供参考,请大家理性看待!

创新互联公司是一家专业提供大观企业网站建设,专注与成都网站制作、成都网站建设、H5技术、小程序制作等业务。10年已为大观众多企业、政府机构等服务。创新互联专业的建站公司优惠进行中。

常对象和常成员的建立,规定了程序中各种对象的变与不变的界限,增强了程序的安全性

常对象定义格式:()

类型 const 对象名;/ const 类型 对象名;

(上图中包含一些错误示范)! c++不允许常对象调用类的任何普通成员函数,且常对象一旦定义,在其生存周期内不允许改变!!

常成员函数--任何不修改数据成员的函数都应该声明为const类型!在编写const函数时,若不慎修改了数据成员,或调用了非const成员函数,则无法通过编译!

常成员函数的说明格式:

返回类型 成员函数名 (参数表) const;

若在类内部只对常函数进行了定义而没有说明其功能,那么在类外对常函数功能进行说明时也需要加上const!下面为正确与错误的区分,(随便写的编译不能通过)

#includeusing namespace std;
class Date
{
private:
    int Y,M,D;
public:
    Date (int y=0,int m=0,int d=0)
    {
        Y=y;M=m;D=d;
    }
    int month() const;
};
(!!!incorrect)int Date::month()
{   return M;   }
(!!!correct)int Date::month() const
{   return M;   }

不能在类声明中初始化const数据成员!下面为错误示范:

SIZE在程序运行时通过构造函数赋值,编译时SIZE其实还没有值。

class A
{
const int SIZE =200;
int array[SIZE];
}

因此const数据成员的初始化只能在类构造函数的初始化表中进行,正确做法如下:

class A
{
const int SIZE ;
A(int size)//构造函数
}
A::A(int size):SIZE(size)//第三个冒号后面的内容为初始化表
{...}
A a(100);//对象a的SIZE值为100
A b(200);//对象b的SIZE值为200

//如果是普通成员则这样写也是可以的,初始化表也不是只能为consst数据成员进行初始化
class A
{
int SIZE ;
A(int size)//构造函数
}
A::A(int size):SIZE(size)//第三个冒号后面的内容为初始化表
{...}

//如果是普通成员也可以这样写
class A
{
int SIZE ;
A(int size)//构造函数
}
A::A(int size)
{SIZE=size;
...}

如何给常引用赋初值?如下:

class A
{
private:
    const int a=100;//常数据成员
    const int& r;//常引用数据成员
public:
    A(int i):r(a)//常数据成员只能通过初始化列表来获得初值
    {...};
};

#静态成员( 包括静态数据成员和静态函数成员 ),用以解决同一个类的不同对象之间数据成员和函数的共享问题,其特点是:不管这个类中创建了多少个对象,其静态成员在内存中只保留一份拷贝,这个拷贝为该类的所有对象所共享。

##静态数据成员

在类内声明静态数据成员的格式为:

static 数据类型 静态数据成员名;如:static double a;

在类外初始化的形式为:

数据类型 类名:: 静态数据成员名=初始值; 

当然,静态常数据成员可以在类内定义的同时对其进行初始化,但静态非常数据成员不行;

如:static const int a=2;     是正确的语句

静态数据成员静态常数据成员
只能类内定义,类外初始化

既能类内定义,类外初始化

=_=^}也能在类内定义的同时初始化

##静态成员函数

静态成员函数是为类的全体对象服务的;静态成员函数无法处理类中非静态函数变量,也不允许使用this指针;

实例1:

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧


本文名称:c++...常量对象与const成员函数-创新互联
当前URL:http://cdweb.net/article/doihis.html