c++是基于面向对象的语言,并不是纯面向对象的语言,因为它包含c的部分,c是面向过程的语言
一、面向对象
概念:面向对象程序设计(OOP)是一种程序设计的泛型,同时也是一种程序开发的方法,它将对象作为程序的基本单元,将程序和数据封装其中,以提高软件的重用性、灵活性和扩展性
二、类和对象的概念
1. 类:类是现实世界在计算机中的反映,它将数据和对这些数据的操作封装在一起(并没有开空间)
2. 对象:类的实例(占有实际的空间)
*****************通俗解释:
人 就是一个类名,
你自己 就是人 这个类里的一个对象;
动物 就是一个类名
你自己 就是动物 这个类里的一个对象
类是封装好的,像一个模型;对象是有类实例化的,也就像一个具体的样本!类规定了对象的特征属性。
通俗来说吧,比如说“人”就是一个类,而你就是一个实例即对象!
******************
-
class Student //类
-
{
-
public:
-
Student()
-
{}
-
-
private:
-
int _num;
-
char* _name;
-
int _age;
-
};
-
-
int main()
-
{
-
Student s;
//对象-> 类的实例
-
system(
"pause");
-
return
0;
-
}
1)类相当于盖楼房的图纸一样,虽然定义了有哪些成员,但并没有实际的空间
2)类可以实例化出多个对象,实例化出的对象占有实际空间(用来存储成员变量)
三、类的三大特性:
1.封装 2.继承 3.多态
封装:函数的封装是一种形式,隐藏对象的属性和实现细节(函数内部),仅仅对外提高函数的接口和对象进行交互。
类的访问限定符可以协助其完成封装
四、类的三个访问限定符
1.public:公有的,类的成员可以从类外直接访问
2.private/protected:类的成员不能从类外直接访问
3.类的每个访问限定符可以多次在类中使用,作用域为从该限定符开始到下一个限定符之前/类结束
4.类中如果没有定义限定符,则默认为私有的(private)
5.类的访问限定符体现了类的封装性
因为_name是私有的,所以在类外不能使用,而_age,Eat()是公有的,所以在类外可以直接使用
五、类的定义
1.定义一个简单的类
2.类的对象可以直接通过 . 来访问类的公有成员,类的对象指针可以通过->来访问类的公有成员
-
class person
-
{
-
public:
-
void Display()
-
{
-
cout << _name <<
"-"<< _age <<
endl;
-
}
-
public:
-
int _age;
-
char* _name;
-
};
-
-
int main()
-
{
-
person p;
-
p._age =
18;
-
p._name =
"peter";
-
p.Display();
-
-
person* ptr = &p;
-
ptr->_age =
20;
-
ptr->_name =
"jack";
-
ptr->Display();
-
-
system(
"pause");
-
return
0;
-
}
3.类外定义成员函数,需要使用::(作用域解析符)指明其属于哪个类
-
class person
-
{
-
public:
-
void Display();
//声明
-
};
-
-
void person::Display()
//类外定义
-
{
-
//......
-
}
六、类的大小
类的成员函数放在公共代码区,所有该类的对象共享这些成员函数,每个对象的大小为类内成员变量的大小之和,遵循内存对齐原则
1.为什么要内存对齐?
答:为了提高程序的性能,方便cpu访问内存,处理器并不是一个字节一个字节来访问内存,一般是4个字节或8个字节
2.空类占多少个字节?为什么?
答:空类占1个字节,占位用,告诉系统我这里定义了一个类,虽然它是空的
c++是基于面向对象的语言,并不是纯面向对象的语言,因为它包含c的部分,c是面向过程的语言
一、面向对象
概念:面向对象程序设计(OOP)是一种程序设计的泛型,同时也是一种程序开发的方法,它将对象作为程序的基本单元,将程序和数据封装其中,以提高软件的重用性、灵活性和扩展性
二、类和对象的概念
1. 类:类是现实世界在计算机中的反映,它将数据和对这些数据的操作封装在一起(并没有开空间)
2. 对象:类的实例(占有实际的空间)
*****************通俗解释:
人 就是一个类名,
你自己 就是人 这个类里的一个对象;
动物 就是一个类名
你自己 就是动物 这个类里的一个对象
类是封装好的,像一个模型;对象是有类实例化的,也就像一个具体的样本!类规定了对象的特征属性。
通俗来说吧,比如说“人”就是一个类,而你就是一个实例即对象!
******************
-
class Student //类
-
{
-
public:
-
Student()
-
{}
-
-
private:
-
int _num;
-
char* _name;
-
int _age;
-
};
-
-
int main()
-
{
-
Student s;
//对象-> 类的实例
-
system(
"pause");
-
return
0;
-
}
1)类相当于盖楼房的图纸一样,虽然定义了有哪些成员,但并没有实际的空间
2)类可以实例化出多个对象,实例化出的对象占有实际空间(用来存储成员变量)
三、类的三大特性:
1.封装 2.继承 3.多态
封装:函数的封装是一种形式,隐藏对象的属性和实现细节(函数内部),仅仅对外提高函数的接口和对象进行交互。
类的访问限定符可以协助其完成封装
四、类的三个访问限定符
1.public:公有的,类的成员可以从类外直接访问
2.private/protected:类的成员不能从类外直接访问
3.类的每个访问限定符可以多次在类中使用,作用域为从该限定符开始到下一个限定符之前/类结束
4.类中如果没有定义限定符,则默认为私有的(private)
5.类的访问限定符体现了类的封装性
因为_name是私有的,所以在类外不能使用,而_age,Eat()是公有的,所以在类外可以直接使用
五、类的定义
1.定义一个简单的类
2.类的对象可以直接通过 . 来访问类的公有成员,类的对象指针可以通过->来访问类的公有成员
-
class person
-
{
-
public:
-
void Display()
-
{
-
cout << _name <<
"-"<< _age <<
endl;
-
}
-
public:
-
int _age;
-
char* _name;
-
};
-
-
int main()
-
{
-
person p;
-
p._age =
18;
-
p._name =
"peter";
-
p.Display();
-
-
person* ptr = &p;
-
ptr->_age =
20;
-
ptr->_name =
"jack";
-
ptr->Display();
-
-
system(
"pause");
-
return
0;
-
}
3.类外定义成员函数,需要使用::(作用域解析符)指明其属于哪个类
-
class person
-
{
-
public:
-
void Display();
//声明
-
};
-
-
void person::Display()
//类外定义
-
{
-
//......
-
}
六、类的大小
类的成员函数放在公共代码区,所有该类的对象共享这些成员函数,每个对象的大小为类内成员变量的大小之和,遵循内存对齐原则
1.为什么要内存对齐?
答:为了提高程序的性能,方便cpu访问内存,处理器并不是一个字节一个字节来访问内存,一般是4个字节或8个字节
2.空类占多少个字节?为什么?
答:空类占1个字节,占位用,告诉系统我这里定义了一个类,虽然它是空的