1、类
定义:class为类的关键字, classname为类名,{}中为类的主体,注意类定义结束时后面分号;。
class classname
{
};
类的访问限定符及封装
访问限定符:public(公有),private(私有的),protected(保护)
解释:
public修饰的成员在类外可以直接访问。
protected和private修饰的成员在类外不能直接访问。
访问权限作用域从该访问权限修饰符出现的位置开始到下一个访问限定符出现时为止。
class默认为private,struct默认为public(因为struct需要兼容c)
面试题:
c++中struct和class的区别
c++需要兼容c语言,所以c++中struct可以当作结构体去使用,,另外c++中还可以定义类。和class定义类一样,区别是struct的成员默认访问方式为public,class成员默认方式为private;
类的作用域:
类定义了一个新的作用域,类的所有成员都在类的作用域中。在类体外定义成员,需要使用::作用域解释符指明成员属于那个类域。
就是在类外,如果想要定义其类成员,就必须使用"::"作用域解释符来解释其属于什么类域。
类的实例化:
用类类型创建对象的过程,称为类的实例化。
注意:类只是一个模型一样的东西,定义一个类并没有分配实际的内存空间来存储它。
所以需要实例化来开辟空间;一个类可以实例化多个对象,实例化出的对象,占用实际的物理空间,存储类成员变量。
总结:就是类定义没有空间,只有实例化之后才会有空间。
计算类对象大小:
只需计算类成员变量大小即可,类成员函数不算大小;但是当类中无成员变量时,其大小为1。1不是存储成员函数,而是占位,表示类的存在。
this指针:
c++通过引入this指针来解决类中函数体不同对象的区分,c++编译器隐藏了一个this指针,让该指针指向当前对象(函数运行时调用该函数的对象)
特性:
类型为*const;
只能在成员函数内部使用(局部变量),所以在栈中存储。
this指针本质是成员函数的形参,,当对象调用其成员函数时,将对象地址作为实参传递给this形参,
所以对象中不存储this指针。
this指针时成员函数第一个隐含的指针形参,一般由编译器自动传递,不需要用户传递。