C++各知识点
来源:互联网 发布:杭州融亿网络科技股份 编辑:程序博客网 时间:2024/06/05 17:08
#include<iostream>#include<string>using namespace std;//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////浅拷贝class Student{ public: Student(char *name1,float score1); ~Student(); private: char *name; float score;};Student::Student(char *name1,float score1){cout<<"Constructing....."<<name1<<endl;name=new char[strlen(name1)+1];if(name!=0){strcpy(name,name1);score=score1;}}Student::~Student(){cout<<"Destructing....."<<name<<endl;name[0]='\0';delete []name;}int main(){Student stu1("Liming",90);Student stu2=stu1;//调用默认的拷贝构造函数,只是将stu1的值复制到stu2,并没有分配空间//析构stu1时程序崩溃,同一空间两次释放return 0;}//深拷贝class Student{ public: Student(char *name1,float score1); Student(Student&stu); ~Student(); private: char *name; float score;};Student::Student(char *name1,float score1){cout<<"Constructing....."<<name1<<endl;name=new char[strlen(name1)+1];if(name!=0){strcpy(name,name1);score=score1;}}Student::Student(Student& stu){cout<<"Copy constructing....."<<stu.name<<endl;name=new char[strlen(stu.name)+1];if(name!=0){strcpy(name,stu.name);score=stu.score;}}Student::~Student(){cout<<"Destructing....."<<name<<endl;name[0]='\0';delete []name;}int main(){Student stu1("Liming",90);Student stu2=stu1;//调用自定义的拷贝构造,分配相应空间return 0;}////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////用只有一个参数的构造函数给对象数组赋值class exam{public:exam(int n){x=n;}int get_x(){return x;}private:int x;};int main(){exam ob1[4]={11,22,33,44};for(int i=0;i<4;i++)cout<<ob1[i].get_x()<<" ";return 0;}//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////静态成员//1.静态数据成员class Student{public:Student(char *name1,char *stu_no1,float score1);~Student();void show();void show_count_sum_ave();private:char *name;char *stu_no; float score;static int count;static float sum;static float ave;};Student::Student(char *name1,char *stu_no1,float score1){name=new char[strlen(name1)+1];strcpy(name,name1);stu_no=new char[strlen(stu_no1)+1];strcpy(stu_no,stu_no1);score=score1;++count;sum=sum+score;ave=sum/count;}Student::~Student(){delete []name;delete []stu_no;}void Student::show(){cout<<"\n 姓名:"<<name;cout<<"\n 学号:"<<stu_no;cout<<"\n 成绩:"<<score;}void Student::show_count_sum_ave (){cout<<"\n 学生人数:"<<count;cout<<"\n 平均成绩:"<<ave;}int Student::count = 0;float Student::sum =0.0;float Student::ave =0.0;int main(){Student stu1("Liming","070201",90);stu1.show();stu1.show_count_sum_ave ();Student stu2("zhanghao","070202",80);stu2.show ();stu2.show_count_sum_ave ();return 0;}//2.静态成员函数class Student{public:Student(char *name1,char *stu_no1,float score1);~Student();void show();static void show_count_sum_ave();private:char *name;char *stu_no; float score;static int count;static float sum;static float ave;};Student::Student(char *name1,char *stu_no1,float score1){name=new char[strlen(name1)+1];strcpy(name,name1);stu_no=new char[strlen(stu_no1)+1];strcpy(stu_no,stu_no1);score=score1;++count;sum=sum+score;ave=sum/count;}Student::~Student(){delete []name;delete []stu_no;--count;sum=sum-score;}void Student::show(){cout<<"\n 姓名:"<<name;cout<<"\n 学号:"<<stu_no;cout<<"\n 成绩:"<<score;}void Student::show_count_sum_ave (){cout<<"\n 学生人数:"<<count;cout<<"\n 平均成绩:"<<ave;}int Student::count = 0;float Student::sum =0.0;float Student::ave =0.0;int main(){Student stu1("Liming","070201",90);stu1.show();Student::show_count_sum_ave ();Student stu2("zhanghao","070202",80);stu2.show ();stu2.show_count_sum_ave ();return 0;}////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////友元//友元函数//1.将非成员函数声明为友元函数class Date{public:Date(int y,int m,int d);friend void showDate(Date &);//声明函数showDate()为类Date的友元函数private:int year;int month;int day;};Date::Date(int y,int m,int d){year=y;month=m;day=d;}void showDate(Date &d)//定义友元函数,形参是Date类的引用{cout<<d.year<<"."<<d.month<<"."<<d.day<<endl;}int main(){Date date1(2009,11,14);showDate(date1);//可以访问类对象的各个私有数据成员return 0;}//2.将成员函数声明为友元函数class Date;class Time{public:Time(int h,int m,int s){hour=h;minute=m;sec=s;}void showDate_Time(Date &);private:int hour;int minute;int sec;};class Date{public:Date(int y,int m,int d){year=y;month=m;day=d;}friend void Time::showDate_Time(Date&);private:int year;int month;int day;};void Time::showDate_Time(Date &d){cout<<d.year<<"."<<d.month<<"."<<d.day<<endl; //作为Date类的友元函数,可以访问Date类对象中的私有数据cout<<hour<<":"<<minute<<":"<<sec<<endl; //作为Time类的成员函数,可以访问Time类对象中的私有数据}int main(){Date date1(2009,11,14);Time time1(6,12,18);time1.showDate_Time(date1);return 0;}//友元类//一个类作为另一个类的友元类class Date;class Time{public:Time(int h,int m,int s){hour=h;minute=m;sec=s;}void showDate_Time(Date &);private:int hour;int minute;int sec;};class Date{public:Date(int y,int m,int d){year=y;month=m;day=d;}friend Time;//声明Time为Date的友元类, //则Time中所有的成员函数为Date的友元函数private:int year;int month;int day;};void Time::showDate_Time(Date &d){cout<<d.year<<"."<<d.month<<"."<<d.day<<endl; //作为Date类的友元函数,可以访问Date类对象中的私有数据cout<<hour<<":"<<minute<<":"<<sec<<endl; //作为Time类的成员函数,可以访问Time类对象中的私有数据}int main(){Date date1(2009,11,14);Time time1(6,12,18);time1.showDate_Time(date1);return 0;}///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////类的组合//学生类中嵌套这一个成绩类对象class Score{public:Score(double c=0,double e=0,double m=0);void show();private:double computer;double english;double mathematics;};Score::Score(double c,double e,double m){computer=c;english=e;mathematics=m;}void Score::show(){cout<<"Score computer:"<<computer<<endl; cout<<"Score english:"<<english<<endl;cout<<"Score mathematics:"<<mathematics<<endl;}class Student{public:Student(string name1,double s1,double s2,double s3);void show();private:string name;Score score1;};Student::Student(string name1,double s1,double s2,double s3):score(s1,s2,s3){name=name1;}void Student::show(){cout<<"Name:"<<name<<endl;score1.show();}int main(){Student stu1("Liming",85,80,70);stu1.show();return 0;}
0 0
- c知识点
- C 知识点
- C/C++code知识点
- C/C++【知识点笔记】
- C基础知识点小记
- c#知识点 net
- C/C++知识点1
- c语言知识点
- C/C++面试知识点
- C语言知识点
- object-c 知识点
- [C++]指针知识点小结
- Objective-C知识点汇总
- Objective-C语言知识点
- C知识点累积篇
- C语言常见知识点
- c语言知识点补遗
- c语言知识点补遗
- uboot启动第一部分
- 马尔科夫模型
- 包含min函数的栈
- Chrome浏览器查看Cookie
- Unsupported major.minor version 51.0 (unable to load class com.xxxx.listener.xxxxListener)异常解决
- C++各知识点
- 解决IE兼容性问题
- 浅析Java静态代码的分析工具Infer
- 解决Maven报Plugin execution not covered by lifecycle configuration
- webService xfire FAQ
- SAT句子填空题9道及答案
- oracle分页
- 【Android基础】点击Back键退出应用程序
- asp.net在vs2012下的发布的几个问题,java里的mvc与net里mvc的区别