C++--类与对象(上)--结构体的内存对齐--this指针
类与对象上
- 结构体的内存对齐
- this指针
- this指针的特性
结构体的内存对齐
对于内存对齐这里的讲解,其实在C++中的和在C语言中的是一样的,我直接将以前的连接粘贴过去,大家注意理解就行了链接: 点击此处
this指针
this 类型: 类类型*const this
这里的this 指针是一个相对于隐藏的指针,它在成员函数中时实际存在的,
下面这个是一个简单的日期类代码,包含了两个成员函数和内部的元素,其实在成员函数中每一个都有着对应的this指针,只不过被隐藏起来的,从外部是无法看见的.就像我下面代码中给出的注释一样!
因为这里的是编译器自主完成的,所以我们只需要明白其中的原理,就可以了!
class Date
{
public:
void Display() //void Display (this) 这里的this 指针在成员函数中是一个形参,使用之后会进行销毁
{
cout << _year << "-" << _month << "-" << _day << endl;
D d;
//this = &d; //因为这里的this指针是一个const 类型的数据,他所指的数据是无法改变的
}
void SetDate(int year, int month, int day) //void SetDate( this ,int year, int month, int day)
{
this->_year = year; //!!!!就如同这一句写的一样,这里的其实就是一个this指针的指向,只不过是被隐藏起来的,从外部是看不见的
_month = month; //像下面这里的也可以是this->_month=month;
_day = day;
}
private:
int _year; // 年
int _month; // 月
int _day; // 日
};
void test() { //这里是一个对类进行简单的调用
Date d1, d2;
d1.SetDate(2018, 5, 1);
d2.SetDate(2018, 7, 1);
d1.Display();
d2.Display();
//外面无法进行访问
//cout << this << endl;
}
this指针的特性
1.this指针的类型:类类型* const
2 this 指针只可以在成员函数内部进行使用,因为在成员函数使用完毕后就会被释放.如下:
class Date
{
public:
//成员函数
void Display() //void Display (this)
//这里的this 指针在成员函数中是一个形参,使用之后会进行销毁
{
//成员函数
void SetDate(int year, int month, int day)
//void SetDate( this ,int year, int month, int day)
{ }
3.this指针本质上其实是一个成员函数的形参,是对象调用成员函数时,将对象地址作为实参传递给this形参。所以对象中不存储this指针
4 this指针是成员函数第一个隐含的指针形参,一般情况由编译器通过ecx寄存器自动传递,不需要用户传递
5.每一个非静态的成员函数中都存在这一个this指针
6.this指针从外部是无法进行访问的
7.空指针无法进行解引用的操作
8.this指针i没有进行解引用的操作下可以进行解引用
这就是对于类与对象的以部分基础内容,只要大家认真看,多敲代码,就能会的!!!
还没有评论,来说两句吧...