一、Class
1、C++ 中的类 Class
C++中的类,是由C++中的结构体演化而来的,只需要将struct改成关键字class,就定义了一个类
C++中类和结构体的区别:
1)默认的权限不同,结构体中默认权限为public,类中默认权限为private
2)默认的继承方式不同,结构体的默认继承方式为public,类的默认继承方式为private
学习记录------day38 C++ bool类型 引用 结构体 堆-CSDN博客
2、定义格式
class 类名
{
public:
功能的成功属性、函数
protected:
受保护的成功属性、函数
prvate:
私有的成功属性、函数
}
3、类的大小
1)一个空的类,大小为1字节,用于占位,如果后期有成员变量加入,会将这1字节分配出去
2)类中的成员函数不占类的大小,运行时才会为成员函数分配内存
3)类中有虚函数,会分配一个虚指针的大小
4)如果该类时虚继承至父类,也会增加一个虚指针的大小
4、类的权限
1)类中的成员属性和成员函数分为不同的权限
public:该权限下的成员,可以在类内、子类中、类外被访问
protected:该权限下的成员,可以在类内、子类中直接被访问,类外不允许被访问
private:该权限下的成员,只能在类内被访问,子类、类外不允许被访问
2)如果没有指定权限,则默认为私有权限
3)一个类中,访问权限可以出现多次,也可以出现在任意地方,一般情况下,我们将同一权限下的成员写到一个关键字下面
4)一个访问权限的范围,是从当前关键字开始到下一个关键字或者整个类的定义结束为止
5)一般情况下,成员属性定义成私有的,成员函数定义成公有的
6)类的访问权限仅限制类外,只要在类里面,无论哪个类对象,都可以直接访问非公共权限的成员
二、this指针
1、this指针,是类的非静态成员函数所拥有的一个隐藏的形参指针,指代对象的起始地址,哪个对象使用this,this就表示哪个对象
2、this指针原型:类名 * const this;
3、使用类对象成员时,即便没有手动调用,系统也会默认使用this指针
4、当成员函数的形参名和成员变量同名时,可以使用this指针进行区分
#include <iostream>
using namespace std;
class Rectangle
{
int height = 0;
int width = 0;
public:
bool init_height(int height,int width);
};
bool compace(Rectangle &p0,Rectangle &p1);
bool Rectangle::init_height(int height, int width)
{
//就近原则 参数自己为自己赋值
height = height;
width = width;
//warning: explicitly assigning value of variable of type 'int' to itself
//this 指针 用于指明 成员属性
this->width = width;
this->height = height;
return true;
}
int main()
{
cout << "Hello World!" << endl;
return 0;
}
5、在拷贝复制函数中,需要返回自身引用时,必须使用this指针