求助
c吧
全部回复
仅看楼主
level 1
ninelieL 楼主
求助,为什么这道题选c。
2018年03月23日 07点03分 1
level 1
方法是否是
2018年03月25日 12点03分 5
level 1
类的static成员是类的所有对象的通用属性,内存里最多只有一个
换句话说,就是类的所有对象的static成员是共用的
再加上
类的构造函数的主要作用是给实例对象的成员初始化赋值
所以对于通用属性的static成员来说
不能用构造函数初始化赋值(否则每实例化一个对象就改变一次通用static成员的值)
换句话说,static成员不能在类体里初始化赋值,而是要在类体外
所以
类体里
static int num;
更多的只是一种声明
int Test::num = 0
就是将Test类的通用static成员num初始化赋0
其他的就具体看printf这个成员函数了
2018年03月26日 01点03分 6
这是从理解上来说,实际操作来说,static是静态变量,存放在静态存储区(相较于自由存储区——堆栈),静态存储区的数据在整个程序执行时都存在,程序没结束就不会被释放~
2018年03月26日 01点03分
第一次printf(num),临时形参变量num自增1就是0+1=1,static成员(this->num)自增1变成了0+1=1,用完后临时形参变量num就释放不存在了,static成员还存在其值为1,第二次printf(num),临时形参变量num自增1就是0+1=1,static成员(this->num)自增1变成了1+1=2~
2018年03月26日 01点03分
复制错了,第一次printf(num),临时形参变量num自增1就是0+1=1,static成员(this->num)自增1变成了0+1=1,用完后临时形参num就释放不存在了,static成员还存在其值为1,第二次printf(num),临时形参num自增1就是1+1=2,static成员(this->num)自增1变成了1+1=2,临时形参跟函数传入值对勾~
2018年03月26日 01点03分
至于通用属性,单以理解论,你可以理解成,一个正常人 类,有2只手2只脚1个脑袋,这是通用的(非正常人例外),至于手多长脚多长脑袋多大,这个就是不能用的~
2018年03月26日 01点03分
1