-
当创建 一个空对象,空对象也占有一个字节的空间,目的是为了区分空对象所占内存的位置
-
class person
{}
void text()
person p;
sizeof(p); -
非静态成员变量由类型所占的字节数有关,不属于类对象上
-
静态成员变量是不属于类对象上
-
静态成员函数不属于类对象上
this指针
-
this指针指向被调用的成员函数所属的对象
-
每一个非静态成员都有this指针,无需书写
this指针的作用
class person
{
public:
person(int age)
{
this->age=age;//由this的定义指向的是p1.
}
int age;
}
void text()
{
person p1(15);
}
-
可利用*this返回对象的本体,实现链式编程思想
-
链式this的返回值是引用,引用直接返回对象。不返回引用则会复制一份数据,返回的不是原来的对象
空指针可以调用成员函数
-
令对象为空
-
class person
{
public:
void shouperson()
{
cout<<"校长"<<endl;
}
void shouperson02()
{
if(this==NULL)
{
return ;
}
cout<<m_age<<endl;//这里默认一个this->m_age;调用时this指向了空指针
}
int m_age;
};
void test()
{
person *p=NULL;
}
const修饰成员函数
-
常函数
-
成员函数后加入const
-
成员函数属性的声明前加入关键字mutable后,常函数中依然可以修改
-
//在类中
class person
{
public:
void shouperson()const
{
this->m_a=100;//const下的this的指向不可以改变,属于指针常量。
}
} -
class person
{
public:
int m_age;
mutable int m_b;
}
-
-
常对象
-
声明对象前加入const称该对象为常对象,也是不可以属性也是不可以修改的。
-
常对象只能调用常函数,就是都加const
class person
{ public:
void person(int age)const
{
m_age=age;
}
int m_age;
};
int main()
{
const person p(10);//常对象
} -