数据的存储类型:
1.auto:
意义是自动类型,标识局部变量存储在进程的栈空间,auto 为局部变量的默认存储类型,一般情况下可隐藏,不需要显示指定。
2.extern:
用来声明在当前文件中使用,但是在其他文件中定义的变量。
3.register:
只能用于限定局部变量。在程序运行时,所有的数据都将调入CPU的寄存器中才能被真正处理,但CPU中寄存器的数量是有限的,所以普通的变量都存储在内存中,只有被使用的时候才加载到寄存器中,而register 修饰的变量则常驻在寄存器中,由于从内存加载数据到寄存器中至少需要一个指令周期,因此访问register变量将在很大程度上提高效率,register变量常用于循环控制。
对象的建立和使用
在建立对象时,只为对象分配用于保存数据成员的内存空间,而成员函数的代码为该类的每一个对象所共享。\
不同对象占据内存中的不同区域,它们所保存的数据各不相同,但对成员数据进行操作的成员函数的程序代码均是一样的
对象的定义方法同结构体定义变量的方法一样,也分三种
当类中有数据成员的访问权限为私有时,不允许对对象进行初始化。
引用时同结构体变量类似,用“.”运算符。\
class A {
int x,y;
public:
int m,n;
void Setxy(int a, int b)
{ x=a; y=b; }
void Print(void)
{ cout<<x<<‘\t’<<y<<endl; }
};
void main(void){
A a1,a2; //定义对象
a1.m=10; a1.n=20; //为公有成员数据赋值
a1.Setxy(2, 5); //为私有成员数据赋值
a1.Print( );
}
用成员选择运算符“.”只能访问对象的公有成员,而不能访问对象的私有成员或保护成员。若要访问对象的私有的数据成员,只能通过对象的公有成员函数间接来获取。
同类型的对象之间可以整体赋值,这种赋值与对象的成员的访问权限无关。
class A {
float x, y;
public:
float m, n;
void Setxy( float a, float b )
{ x=a; y=b; }
void Print(void)
{ cout<<x<<'\t'<<y<<endl; }
};
void main(void){
A a1,a2;
a1.m=10; a1.n=20; //为公有成员数据赋值
a1.Setxy(2.0,5.0);
a2=a1; //整体赋值至少要求类相同或为子类
a1.Print();
a2.Print();
}
定义类的指针以及用指针引用对象
class A{
float x,y;
public:
float Sum(void)
{ return x+y; }
void Set(float a,float b)
{ x = a; y = b;}
void Print(void)
{ cout<<"x="<<x<<'\t'<<"y="<<y<<endl;}
};
void main(void){
A a1,a2;
A *p; //定义类的指针
p = &a1; //给指针赋值
p->Set(2.0, 3.0); //通过指针引用对象的成员函数
p->Print();
cout<<p->Sum()<<endl;
a2.Set(10.0, 20.0);
a2.Print();
}