感觉自己的基础还是不够好 最近打算在学新知识的同时 把之前的一些知识点再复习一下
在C语言的学习中 我们学习过结构体 我们用结构体来描述复杂的对象 在结构体中只能定义变量
而在C++的结构体中 我们可以在C++中 定义函数
下面给出一个简单的例子
创建一个结构体 并且包含打印其信息的showinfo函数
struct Stu
{
void showinfo()
{
cout << name << " " << sex << " " << age << endl;
}
char name;
char sex;
int age;
};
并且 在cpp中 还创建了**类(class)**来替代结构体
给出一个定义类的模板
class ClassName
{
//类体:由成员函数和成员变量组成
};//与结构体类似的是:最后都有分号
解释说明:
class是关键字 ClassName是类的名字
类体中内容称为类的成员:类中的变量称为类的属性或成员变量; 类中的函数称为类的方法或者成员函数。
类有两种定义方式
声明和定义全部放在类体中,
需注意:成员函数如果在类中定义,编译器可能会将其当成内联函数处理。
class Person
{
public:
void showinfo()
{
cout << name << " " << sex << " " << age << endl;
}
public:
string name;
string sex;
int age;
};
类声明放在.h文件中,成员函数定义放在.cpp文件中,
注意:成员函数名前需要加类名::
一般情况下,更期望采用第二种方式。
在person.h文件中
class Person
{
public:
void showinfo();
public:
string name;
string sex;
int age;
};
在person.cpp文件中
#include"person.h"
void Person::showinfo()
{
cout << name << " " << sex << " " << age << endl;
}
不做过多介绍 直接来看下面的八股文
封装:将数据和操作数据的方法进行有机结合,隐藏对象的属性和实现细节,仅对外公开接口来和对象进行交互。
封装本质上是一种管理,让用户更方便使用类。
比如:对于电脑这样一个复杂的设备,提供给用户的就只有开关机键、通过键盘输入,显示器,USB插孔等,让用户和计算机进行交互,完成日常事务。但实际上电脑真正工作的却是CPU、显卡、内存等一些硬件元件。
对于计算机使用者而言,不用关心内部核心部件,比如主板上线路是如何布局的,CPU内部是如何设计的等,用户只需要知道,怎么开机、怎么通过键盘和鼠标与计算机进行交互即可。因此计算机厂商在出厂时,在外部套上壳子,将内部实现细节隐藏起来,仅仅对外提供开关机、鼠标以及键盘插孔等,让用户可以与计算机进行交互即可。
在C++语言中实现封装,可以通过类将数据以及操作数据的方法进行有机结合,通过访问权限来隐藏对象内部实现细节,控制哪些方法可以在类外部直接被使用。
类定义了一个新的作用域 类中所有成员都在类的作用域中 在类体外定义成员时,需要使用**:*(作用域操作符)来指明成员属于哪个类域
通俗来讲就是 出门在外 一个人(成员)是一个家庭(类域)中的一员 自我介绍的时候用::来介绍自己是谁家的
下面给出一段例子
class Person
{
public:
void PrintPersoninfo();
private:
string name;
string gender;
int age;
};
//这里要指定PrintPersonInfo属于Person这个类域
void Person::PrintPersoninfo()
{
cout << name << endl << gender << endl << age << endl;
}
用类类型创建对象的过程,称为类的实例化
再来看一段八股文
可以看下面这个例子:
int main()
{
Person.age = 100;//会报错:编译失败:error C2059: 语法错误:“.”
return 0;
}
Person类是没有空间的,只有Person类实例化出的对象才有具体的年龄。
(了解即可
//类中既有成员变量又有成员函数
class A1
{
public:
void PrintA()
{
count << a << endl;
}
private:
char a;
}
//类中仅有成员函数
class A2
{
public:
void f(){};
}
//类体为空:空类
class A3
{}
大家可以先猜想一下 类对象是如何存储的呢
A:
存储类中的各个成员
B:
代码只保存一份,在对象中保存存放代码的地址
C:
只保存成员变量, 成员函数存放在公共的代码段
直接给出结论:
一个类的大小:就是这个类中成员变量之和 要注意内存对齐
特别的:对于空类 编译器给空类一个字节来唯一标识这个类的对象
说到内存对齐,我们可以联想到结构体的内存对齐规则
大家可以自行了解一下(绝对不是我懒得打字了
关于类与对象的学习 先暂时到这里 我们下篇文章见~~~~
希望你有所收获