C++

来源:互联网 发布:山东seo技术 编辑:程序博客网 时间:2024/05/22 01:48
#include <string.h>#include <iostream>using namespace std;class stu{private: //定义数据成员    int num;    static int num1;//1.定义静态变量    char name[10];    char sex;public: //声明,成员函数,初始化构造函数。。。    int pub_test=1;    stu(int n,char nam[],char s) //带参数的构造函数可以给数据成员初始化,因为class 不占储存空间,不能直接初始化,类外也可以定义构造函数| stu :: stu()    {        num = n;        strcpy(name,nam);        sex = s;    }    ~stu()   {        cout<<"stud has been destructed!"<<endl;    }      void display(); //must be define !!!      static  int numadd();//    void display() //class in//    {//        cout<<"num:"<<num<<endl;//        cout<<"name:"<<name<<endl;//        cout<<"sex:"<<sex<<endl;//    }};class stu2{private: //定义数据成员    int num;    char name[10];    char sex;public: //声明,成员函数,初始化构造函数。。。    int pub_test=1;    stu2(int n,char nam[],char s) : num(n),sex(s) //带参数的构造函数可以给数据成员初始化,因为class 不占储存空间,不能直接初始化,类外也可以定义构造函数| stu :: stu()    {//        num = n;          strcpy(name,nam);//        sex = s;    }    ~stu2()   {        cout<<"stud has been destructed!"<<endl;    }    void display2()const //常成员函数    {        cout<<"num:"<<num<<endl;        cout<<"name:"<<name<<endl;        cout<<"sex:"<<sex<<endl;    }};//2.静态成员函数int stu::numadd(){    num=num+1; //非法的,只能用静态变量    num1=num1+1;//static int num1    cout<<"static numadd:"<<num1<<endl;}int stu::num1=0; //3.赋初值 :: void stu:: display() //class out{    cout<<"num:"<<num<<endl;    cout<<"name:"<<name<<endl;    cout<<"sex:"<<sex<<endl;    cout<< "class stud = "<<sizeof(stu)<<endl;    cout<< "class stud = "<<sizeof(sex)<<endl;    cout<< "class stud = "<<sizeof(num)<<endl;    cout<< "class stud = "<<sizeof(name)<<endl;    cout<< "class public pub_test = "<<pub_test<<endl;}int main(int argc, char *argv[]){   stu std1(100,"S_yang",'m'),std2(101,"quan",'w');//1.class name call   std1.display();   std2.display();   stu s(111,"P_yang",'p'),*p; //2.point call   p = &s;   p->pub_test=55; //public//   p->name="P_yang"; //error can't call private//   p->num="111";//error//   p->sex='p';//error   p->display();   stu c(222,"C_yang",'C'); //3.& call   stu &c1 = c;   c1.display();   stu2 const ct(555,"CT_yang",'c'); //常对象需要访问成员函数,要把成员函数也声明成const   ct.display2();   /**常对象、指针**/   stu cp(666,"CP_yang",'c'),cp1(667,"CP_yang2",'c');   stu *const cw=&cp;   cw->display();   //cw = &cp; //cw指向对象tl,此后不能改变指向   //cw = &cp1;//error,不能改变指向   /**对象的动态建立**/   stu *n = new stu(777,"NEW_yang",'c');   n->display();   delete n;   /**对象赋值**/   stu cpy(cp);//cpy 是复制cp的对象   cpy = c; //对象赋值   cpy.display();   /**静态成员函数**/   stu::numadd(); //4.静态成员函数调用    return 0;}结果:num:100name:S_yangsex:mclass stud = 20class stud = 1class stud = 4class stud = 10class public pub_test = 1num:101name:quansex:wclass stud = 20class stud = 1class stud = 4class stud = 10class public pub_test = 1num:111name:P_yangsex:pclass stud = 20class stud = 1class stud = 4class stud = 10class public pub_test = 55num:222name:C_yangsex:Cclass stud = 20class stud = 1class stud = 4class stud = 10class public pub_test = 1num:555name:CT_yangsex:cnum:666name:CP_yangsex:cclass stud = 20class stud = 1class stud = 4class stud = 10class public pub_test = 1num:777name:NEW_yangsex:cclass stud = 20class stud = 1class stud = 4class stud = 10class public pub_test = 1stud has been destructed!num:222name:C_yangsex:Cclass stud = 20class stud = 1class stud = 4class stud = 10class public pub_test = 1static numadd:1stud has been destructed!stud has been destructed!stud has been destructed!stud has been destructed!stud has been destructed!stud has been destructed!stud has been destructed!stud has been destructed!