数据的存储类型:

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