InstanceMember和StaticMember

提要:

2.0 想要在类外,用类名访问静态变量:只有:[注意] number 必须是static int 类型,如果number是int 类型,那么程序会出错。
static int GetNumber()
{
return number;
}
即:
类中:(必须这样才能直接用类名访问get函数)—目前不知道为什么,也不知道是否有扩展
static int number;
static int getNumber()
{
return number;
}
即:非静态变量,若想访问,必须要使用对象调用get函数来访问
静态成员函数中,只能返回静态成员数据。----- 不只是只能返回静态数据成员,在静态函数中,都不能使用非静态数据成员
在这里插入图片描述

1.0 int Square::numberOfObijects; 是定义,定义一个类中的静态成员;且被放在静态区:
2.0 由中间的图形可以看到,实例数据成员是跟随对象的,而static成员是放在静态区,你创建了8个对象,静态成员的个数依然只有一个。
3.01.0中可知,类中的静态数据成员,不需要创建对象,在类外,是可以直接定义并初始化的:我觉得主要是可以在类外,重新初始化。

4.0 要想使用Squeue中 静态成员number, 必须在使用之前,在类外定义它:
int Squeue::number = 1;

void main()
{
	Squere s1;
	Squere s2{ 5.0f };
注意:要想使用这个get函数,必须要有第一步的类外定义。
	cout << s1.getNumber() << endl;
}

5.0 非静态函数,是不能用类名的方式来调用的。

在这里插入图片描述
以上程序有个不太好的地方:
这个静态成员,可以用get 函数获得,而不需要放在public里。这个get函数,可以是静态的,也可以不是静态的,都可以调用。二者的区别是:

非静态成员函数不可以使用类名直接调用成员函数:
静态成员函数,可以不使用对象,直接用类名就可以访问。Squeue::GetNumber();

第二点:初始化成员函数,最好使用{},而不是()。

	cout << s1.getNumber() << endl;
	// 静态的get函数:
	cout << Squere::GetNumber() << endl;
	// 非静态的get函数:这里是会报错的。
	cout << Squere::getNumber() << endl;

二、 测试之后:

1.0 第一个: number 在类中是静态定义的:static int number;
int getNumber
{
	return number;
}

2.0 想要在类外,用类名访问静态变量:只有:[注意] number 必须是static int 类型,如果number是int 类型,那么程序会出错。
static int GetNumber()
{
	return number;
}

【注】普通数据之间:int 和 static int 类型 的变量是可以互相赋值的:

如下可知:普通的函数,int 型的变量a 是可以返回static int 类型的函数的。

static int test()
{
	std::cout << "hello";
	int a = 1;
	return a;
}

int b = test();
	cout << b << endl;
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值