static成员定义的一个例子

在本例中,将看到类的静态成员可以是本身所定义的类类型。也只有static类成员才可以如此定义,否则,成员变量只能定义成类的引用或指针。

class C中含有两个构造函数:C(std::string)及C(C* p)。前者为私有构造函数,故只能被静态成员外部定义时使用。

静态成员的定义分成二步:必需分为类内声明、和类外定义。本例中用"icanth"初始化对象stc_c的_name。

#include <iostream>
#include <string>

class C
{
private:
	static C stc_c; // 类内声明
	C* p_c;
	std::string _name;

private:
	C(std::string name):_name(name) { }

public:
	C( C* p = & stc_c ): p_c (p), _name( "undef" ) { }
	void print();
};

void C::print() { 
	std::cout << "The static name is : " << p_c->_name << '\n'
		<< "The object name is " << _name << std::endl; 
}

C C::stc_c("icanth");		// 类外定义

void test(char * args[], int argc)
{
	C c;
	c.print();
}

运行截图

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值