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();
}

运行截图

阅读更多
文章标签: string c object class
个人分类: C++
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭