1、什么是类什么是对象,如何创建一个类?
(1)类的概念:
在生活中,我们通常用“类”这个字来形容具有共同特点的一类事物,如:人类、鼠类、犬类,也许在具体的行为或特征方面上,同类不同个体会具有差异化,但是在宏观的角度而言也具有一定的相似性;
例如:人类的个体可能会有性格上的差异,体重上的差异,但是都需要呼吸以维持声明,因此我们用人类来比拟c++中“类”这一概念的话,那么具体的某一个人就是这一个“类”中的一个对象;
(2)创建一个简单的类:
类和我们所熟知的数据类型并无差异,只是相对而言,我们可以更为自由灵活的去创建一个对象或者变量,而不再受数据类型本身的限制,因为对于一个复杂的个体而言,其所要储存的数据不可能只是单纯的int类型、float类型或者是char类型等等,有可能是他们之中几个的结合,或者说我们所要储存的东西甚至无法用单纯的用数据来描述,也就是“行为”,换句话就是“函数”;
那么创建一个类之前我们要先知道声明“类”所用的关键字:“class”
类的语法:
class类名{
访问修饰符:
成员变量、函数等;
};
#include<iostream>
using namespace std;
class People{
string name;
int age;
float weight;
double height;
};
如上述代码所示,我们已经创建了一个类,类名为“People”,其中的变量包括:string类型的name,int类型的age,float类型的weight,double类型的身高,这些变量我们称之为成员变量,也称为类的属性;
(3)访问权限修饰符
但是我们并不想让任何人都可以随意的访问这些属性,因此在类中我们可以利用三种访问修饰符对类中不同的变量进行修饰分别为:
①“public”:公共的,任何位置都有权限访问;
②“private”:私有的,只有当前类内有权限访问;
③“protected”:受保护的,类内和子类有权限访问;
注:在类的定义中,未被访问修饰符所修饰的成员变量或成员函数默认为private;
由于同一类别的不同对象会具差异化,也就是具有不同的属性,因此我们通常不会直接在类中去给属性赋值,而是在创建对象时去初始化其中的属性,那么我们来创建一个属于“People”类的对象:
#include<iostream>
using namespace std;
class People{
private:
int age;
float weight;
public:
string name;
double height;
};
int main(){
People Xiao_Ming;
}
此时,我们已经在主函数中,创建了一个属于“People”类的对象:“Xiao_Ming”,由于Xiao_Ming属于People类,因此,其具有People类中的所有属性和行为(什么是行为我们一会再说);
2、类的初始化
(1)类外直接进行赋值初始化
首先声明(1)~(4)的本质都是赋值,并不是真正意义上的初始化,具体原因在(5)中说明;
现在的Xiao_Ming是一个刚创建好的对象,我们需要对他的属性进行初始化(赋值),如果想要在类外调用类成员的话我们使用“.”来实现,具体语法:“对象名.成员变量”,而由于访问权限是“public”的成员变量只有name和height,因此我们在类外只能初始化public类型的成员变量:
#include<iostream>
using namespace std;
class People{
private:
int age;
float weight;
public:
string name;
double height;
};
int main(){
People Xiao_Ming;
//类外进行赋值初始化
Xiao_Ming.name = "Xiao_Ming";
Xiao_Ming.height = 175.9;
}
但此时出现了一个问题,被“private”修饰的变量无法在类外进行操作,但是我们创建对象的时候一定是在类外创建的,这就形成了矛盾,这就需要我们使用类的行为来修改属性;
(2)利用类的行为修改对象属性
类内的函数就可以看作是类的行为,由于被private修饰的变量只能在类内进行访问,然而我们无法在类内直接进行赋值操作,因此,我们可以在类中定义一个可以接收参数的函数用来修改类内成员变量的值,这就实现了用类的行为改变对象的属性,从而可以灵活的初始化我们所创建的不同对象;
#include<iostream>
using namespace std;
class People{
private:
int age;
float weight;
public:
string name;
double height;
//在主函数中接收初始化的参数用于给age和weight赋值
void people_initial(int n,float m){
age = n;
weight = m;
}
//可以打印输出age和weight的值
void people_display(){
cout << age << endl;
cout << weight << endl;
}
};
int main(){
PeopleXiao_Ming;
//类外进行赋值初始化
Xiao_Ming.name = "Xiao_Ming";
Xiao_Ming.height = 175.9;
//利用类的行为修改对象的属性
Xiao_Ming.people_initial(18,60);
//打印输出对象age和weight的值
Xiao_Ming.people_display();
}
并且,我们可以创建多个对象,再依次进行赋值,并打印输出:
#include<iostream>
using namespace std;
class People{
private:
int age;
float weight;
public:
string name;
double height;
//在主函数中接收初始化的参数用于给age和weight赋值
void people_initial(int n, float m){
age = n;
weight = m;
}
//可以打印输出age和weight的值
void people_display(){
cout << age << endl;
cout << weight << endl;
}
};
int main(){
People X