C++基础知识(一)
#include "stdafx.h"
#include "iostream.h"
class student//基类
{
private:
int stu_num;
char* stuname;
char* sex;
protected:
public:
student(){};
student(int num,char* name,char* sex);
student* get();
void virtual printstu();//虚函数声明,一旦基类声明虚函数,派生类就一定是虚函数即便不写virtual
void setname(char* name);
void friend setsex(student* stu,char* sex);
student operator++(int);//运算符重载
};
student student::operator ++(int)
{
student s;
s.stu_num=stu_num++;
return s;
}
void setsex(student* stu,char* sex)//友元函数
{
stu->sex=sex;
}
inline void student::setname(char* name)//内联函数
{
this->stuname=name;
}
student::student(int num,char* name,char* sex)//构造函数
{
this->stu_num=num;
this->stuname=name;
this->sex=sex;
}
void student::printstu()//打印函数
{
cout<<this->sex<<"\n"<<this->stuname<<"\n"<<this->stu_num<<"\n"<<endl;
}
student* student::get()//返回本身对象指针
{
return(this);
}
class univstudent:public student//派生类
{
private:
int age;
char* edubkground;
public:
//派生类构造函数初始化
univstudent(int age,char *edubkground,int num,char* name,char* sex):age(age),edubkground(edubkground),student(num,name,sex){}
void printstu();
};
void univstudent::printstu()
{
student::printstu();
cout<<this->age<<"\n"<<this->edubkground<<"\n"<<endl;
}
void main()
{
//利用指针建立对象
printf("利用指针建立对象:\n");
student *stu1=new student(3,"qinhui","male");
stu1->printstu();
stu1->get()->printstu();
//直接建立对象并初始化
printf("直接建立对象并初始化:\n");
student stu2(1,"yuanyuan","female");
student *p;
p=&stu2;
stu2.printstu();//用对象调用函数
p->printstu();//用指针调用函数
//虚函数示例
printf("虚函数示例:\n");
univstudent univstu(23,"college",1,"qinhui","male");
student *u2=new student(2,"yuanyuan","female");//建基类指针
u2->printstu();//调用基类构造函数
u2=&univstu;
u2->printstu();//调用派生类构造函数
//内联函数示例
printf("内联函数示例\n");
stu1->setname("秦辉");
stu1->printstu();
//友元函数示例
printf("友元函数示例\n");
setsex(stu1,"男");
stu1->printstu();
//重载运算符示例
printf("重载运算符示例:\n");
stu2++;
stu2.printstu();
}