1.那一种成员变量可以在同一个类的实例间共享?
必需使用静态成员数据在一个类的所有实例间共享数据。 如果想限制静态成员的访问,必需把他们声明为私有或者保护类型。
但是静态成员数据必需先初始化、
#include<iostream>
using namespace std;
class SavingAccount
{
private:
char m_name[40];
char m_addr[60];
double total;
static double m_rate;
public:
static void setRate(double newRate)
{
m_rate = newRate;
}
void Show()
{
cout << "m_rate= "<< m_rate << endl;
}
};
double SavingAccount::m_rate = 0.0075; //静态成员变量首先初始化
void main()
{
SavingAccount::setRate(0.00746);
//cout<<SavingAccount::m_rate << endl;
SavingAccount myAccount;
myAccount.Show();
myAccount.setRate(0.0074);
myAccount.Show();
}
2.
#include<iostream>
using namespace std;
class Cat
{
public:
Cat(int age):itsAge(age)// 构造函数,用于初始化
{
HowManyCats++;
}
virtual ~Cat()
{
HowManyCats--;
}
virtual int GetAge()
{
return itsAge;
}
virtual void SetAge(int age)
{
itsAge = age;
}
static int GetHowMany()
{
return HowManyCats;
}
private:
int itsAge;
static int HowManyCats;
};
int Cat::HowManyCats = 0;
void tele();
int main()
{
const int MaxCats=5;
Cat*CatHouse[MaxCats];
for(int i=0; i<MaxCats;i++)
{
CatHouse[i] = new Cat(i);
tele();
}
for(int i=0;i<MaxCats; i++)
{
delete CatHouse[i];
tele();
}
return 0;
}
void tele()
{
cout << "There are" << Cat::GetHowMany() << "Cats alive!" << endl;
}
类的静态成员变量一定要初始化,如果把静态成员变量设置为私有,那么可以通过公有静态成员函数访问。
分享到:
相关推荐
java 利用反射获取内部类静态成员变量的值操作.docx
在A中定义有全局变量X(或类的静态成员变量),则在动态库B中访问的X,与可执行程序C中访问的X是同一个变量还是两个不同的变量? 答案:是两个不同的变量。 2. 工程中包含动态库A,动态库B,可执行程序C。C依赖于A和...
C++类中的静态成员变量和静态成员函数的作用
类中静态成员变量和普通变量的区别——实例代码(VS2010),已测试,没有问题。
静态成员变量和静态成员函数 class ClassA { int a; int b; static int c; //静态成员变量 static void xxx_fun() //静态成员函数 { ... } } 普通成员变量每个对象都有各自的一份,静态成员变量所有对象...
仔细琢磨静态成员变量,会发现其与C++的方式既相容也矛盾,具有特殊性。 先说相容的一面。·C/C++·有声明和定义的说法:声明给出签名,定义给出具体实现。对类型而言,声明不一定能知道其对象占用空间大小,但根据...
1、讲解static静态局部变量的原理与特点; 2、讲解static静态全局变量的原理与特点; 3、讲解static静态成员变量的原理与特点; 4、讲解static静态成员函数的原理与特点;
C++ 静态成员变量 嵌套类分配回收内存
直接调用类方法量:class::attribute/function,无论是静态/非静态都可以,静态static:声明类成员或方法为 static,就可以不实例化类而直接访问,不能通过一个对象来访问其中的静态成员(静态方法除外),静态成员属于类,不...
静态成员:静态类中的成员加入static修饰符,即是静态成员.可以直接使用类名+静态成员名访问此静态成员,因为静态成员存在于内存,非静态成员需要实例化才会分配内存,所以静态成员不能访问非静态的成员..因为静态成员...
Java中的静态变量静态方法静态块与静态类.docx
然而非静态成员变量和非静态成员函数是针对类的对象而言。 然而从本质上来说类的静态成员函数的函数形参中没有默认的this指针,导致不能调用具体实例对象的成员。 下面我们来测试一下: 先在静态成员函数中调用静态...
实验题2 设计一个用来描述汽车的类Car,使用类的非静态成员变量来表示汽车的车主姓名name、当前的速率speed: 1. 创建构造函数为成员变量赋初值。 2. 使用类的非静态成员方法来表示改车主姓名changeName操作, 并通过...
静态成员:静态类中的成员加入static修饰符,即是静态成员.可以直接使用类名+静态成员名访问此静态成员,因为静态成员存在于内存,非静态成员需要实例化才会分配内存,所以静态成员不能访问非静态的成员..因为静态成员...
一般地,线程要读写类的私有成员变量,只有两种方法:将全局函数声明为类友元friend,或者使用静态的成员函数static。那非静态的成员函数呢?一般地方都说的是,不行,做不了。。。为什么不行?都是代码区的代码,...
首先呢我们知道c++类中的成员分为成员变量和成员函数两大类,如果再加上static给以区分的话那么会有以下四种:静态成员变量,非静态成员变量;静态成员函数,非静态成员函数 (1)成员变量 我们知道类的静态成员...
静态成员变量在不创建类的对象的情况下,就可以使用,它被所有该类的实例所共享。 而普通非静态成员变量只能在创建了类的对象实例后才能使用,并且不是共享,而是属于具体的
静态成员变量: 类体中的数据成员的声明前加上static关键字,该数据成员就成为了该类的静态数据成员。和其他数据成员一样,静态数据成员也遵守public/protected/private访问规则。同时,静态数据成员还具有以下特点...
cpp代码-2种访问静态成员变量方法
主要介绍了Java面向对象类的定义,静态变量,成员变量,构造函数,封装与私有,this概念与用法,较为详细的分析了Java类的定义,静态变量,成员变量,构造函数,封装,私有等相关原理、用法及操作注意事项,需要的朋友...