类 & 对象
<font color="red">类是对象的抽象和概括,而对象是类的具体和实例</font>
<iframe frameborder="no" border="0" marginwidth="0" marginheight="0" width=100% height=86 src="//music.163.com/outchain/player?type=2&id=1308818967&auto=1&height=66"></iframe>
- 类用于指定对象的形式,它包含了数据表示法和用于处理数据的方法。
- 类中的数据和方法称为类的成员。(成员有变量也有函数,分别成为类的属性和方法)
#include<iostream>
#include<Cstring>
using namespace std;
/*class Student
{
public:
int num;
char name[100];
int score;
int print()
{
cout<<num<<" "<<name<<" "<<score;
return 0;
}
};*/
class Student
{
public:
int num;
char name[100];
int score;
int print();
};
int Student::print()
{
cout<<num<<" "<<name<<" "<<score;
return 0;
}
int main()
{
Student A;
A.num=1700710135;
strcpy(A.name,"ye shan");
A.score=100;
//A.print();
//Student *Ap;
//Ap=&A;
//Ap->print();
Student& A_reference=A; //引用定义时就要初始化
//A_reference=A; 错误
A_reference.print();
return 0;
}
image
类的定义
定义一个类,本质上是定义一个数据类型的蓝图。它定义类的对象包括了什么,以及可以在这个对象上执行哪些操作。
类的定义以关键字class
开头,后面跟类的名称。类的主体包含在一对花括号中。类定义后必须跟着一个分号或一个声明列表
。
写法1
成员函数定义在在类里
class Student
{
public: //声明公有成员,可被类的任何对象访问
int num;
char name[100];
int score;
int print()
{
cout<<num<<" "<<name<<" "<<score;
return 0;
}
};
写法2
成员函数定义在类外,使用范围解析运算符(作用域限定符)::
在::限定符前必须使用类名
class Student
{
public:
int num;
char name[100];
int score;
int print();
};
int Student::print()
{
cout<<num<<" "<<name<<" "<<score;
return 0;
}
对象的建立和使用
类就是包含函数的结构体,是一种自定义数据类型,用它定义出来变量,就是对象,这就是所谓的“对象是类的具体和实例”,定义了一个这个类的对象,也可以说实例化了一个对象,就是这个意思!
- 声明类的对象,就像声明基本的变量类型一样
- 访问公共数据成员可以使用直接成员访问运算符
.
来访问
Student A; //声明A,类型为Student
A.num=1700710135;
strcpy(name,"ye shan");
A.score=100;
A.print();
类的访问修饰符
- private
- protected
- public
- 成员和类的默认访问修饰符是
private
私有成员变量或函数在类的外部是不可访问的,甚至是不可查看的。只有类和友元函数可以访问私有成员。 - 保护成员修饰符
protected
,保护成员变量或函数与私有成员十分相似,但有一点不同,保护成员变量在派生类(即子类)中是可以访问的。 - 公有成员在程序中类的外部是可以访问的。可以在不适用任何成员函数来设置和获取公有变量的值
#include<iostream>
#include<Cstring>
using namespace std;
class Student
{
private:
int num;
protected:
int score;
public:
char name[100];
int GetNum(int n);
int GetScore(int s);
};
int Student::GetNum(int n)
{
num=n;
return num;
}
int Student::GetScore(int s)
{
score=s;
return score;
}
int main()
{
Student A;
strcpy(A.name,"yeshan");
cout<<"the name is"<<" "<<A.name<<endl;
//A.num=1700710135,成员num是稀有的,不可这样用
cout<<"the num is"<<" "<<A.GetNum(1700710135)<<endl;
cout<<"the score is"<<" "<<A.GetScore(100)<<endl;
return 0;
}
image
派生类中使用protected成员变量
#include<iostream>
#include<Cstring>
using namespace std;
class Student
{
private:
int num;
protected:
int score;
public:
char name[100];
int GetNum(int n);
int GetScore(int s);
};
class Small_Student:Student//Small_Student是派生类
{
public:
int Get_Score_1(int temp);
};
int Small_Student::Get_Score_1(int temp) //子类成员函数
{
score=temp;
return score;
}
int Student::GetNum(int n)
{
num=n;
return num;
}
int Student::GetScore(int s)
{
score=s;
return score;
}
int main()
{
Student A;
strcpy(A.name,"yeshan");
cout<<"the name is"<<" "<<A.name<<endl;
//A.num=1700710135,成员num是稀有的,不可这样用
cout<<"the num is"<<" "<<A.GetNum(1700710135)<<endl;
cout<<"the score is"<<" "<<A.GetScore(100)<<endl;
Small_Student B;
cout<<"the score is"<<" "<<B.Get_Score_1(520)<<endl;
return 0;
}
image
网友评论