博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
c++ static类成员
阅读量:5821 次
发布时间:2019-06-18

本文共 1875 字,大约阅读时间需要 6 分钟。

使用类的static成员的优点:

(1)static成员在类的作用域中,避免与其他作用域的名字冲突。

(2)可以实施封装。static成员可以是私有成员,它遵循正常的公有、私有访问规则。

(3)static成员与特定类关联,更能清晰的显示出程序的意图。

class Account{public:    // interface functions here    void applyint() { amount += amount * interestRate; }    static double rate() { return interestRate; }    static void rate(double); // sets a new rateprivate:    std::string owner;    double amount;    static double interestRate;    static double initRate();};

static数据成员独立于该类的所有对象,它是与类进行关联的。Account的所有对象都共享一个单独的interestRate对象。

static成员可以通过类的作用域操作符,或者通过对象、引用、指针间接调用。

rate = account.rate();rate = accountPointer->rate();rate == Account::rate();

类的成员函数可以不用作用域操作符来使用类的static成员。

static成员在类的外部定义时,无需重复static关键字。

void Account::rate(double newRate){    interestRate = newRate;}

static成员函数没有this指针。

static成员函数不能声明为const。static成员函数不属于任何对象,所以它也不会修改对象的任何组成部分,因此也无需声明为const。

static成员函数不能声明为虚函数。

static数据成员必须在类定义体外部定义(在类定义体内部声明)。static数据成员不能通过类的构造函数初始化,而是在定义时初始化。

// define and initialize static class memberdouble Account::interestRate = initRate();

整形的const static成员比较特殊,可以在类的定义体内声明时进行初始化。

class Account{public:    static double rate() { return interestRate; }    static void rate(double); // sets a new rateprivate:    static const int period = 30;     double daily_tbl[period]; // ok: period is constant expression};

const static数据成员在类的定义体内初始化时,仍必须在类的定义体外进行定义,但不必再指定初始值。

// definition of static member with no initializer// the initial value is specified inside the class definitionconst int Account::period;

static数据成员的类型可以是该成员所属的类类型,普通成员则不可以。

class Bar{private:    static Bar mem; // ok    Bar mem1; // error}

static数据成员可用作默认实参。

class Screen{public:    // bkground refers to the static member declared later in the class definition    Screen& clear(char = bkground);private:    static const char bkground = ‘#’;}

【学习资料】 《c++ primer》

转载于:https://www.cnblogs.com/zhuyf87/archive/2013/02/23/2923312.html

你可能感兴趣的文章
Chrome 广告屏蔽功能不影响浏览器性能
查看>>
vSphere 6将于2月2日全球同步发表
查看>>
Android状态栏实现沉浸式模式
查看>>
让你的APP实现即时聊天功能
查看>>
iOS 绝对路径和相对路径
查看>>
使用Openfiler搭建ISCSI网络存储
查看>>
学生名单
查看>>
(转) 多模态机器翻译
查看>>
【官方文档】Nginx负载均衡学习笔记(三) TCP和UDP负载平衡官方参考文档
查看>>
矩阵常用归一化
查看>>
Oracle常用函数总结
查看>>
【聚能聊有奖话题】Boring隧道掘进机完成首段挖掘,离未来交通还有多远?
查看>>
盘点物联网网关现有联网技术及应用场景
查看>>
考研太苦逼没坚持下来!看苑老师视频有点上头
查看>>
HCNA——RIP的路由汇总
查看>>
zabbix监控php状态(四)
查看>>
实战Django:小型CMS Part2
查看>>
原创]windows server 2012 AD架构试验系列 – 16更改DC计算机名
查看>>
统治世界的十大算法
查看>>
linux svn安装和配置
查看>>