什么是类
在c语言中的结构体可以将不同类型的数据封装在一起,在c++中,不仅可以将不同类型的数据封装在一起还可以将函数放进结构体,我们称这样的结构体为类。
定义一个类
声明一个类可以使用 class 和 struct
class的默认访问权限为私有,struct的默认访问权限为公有
class A{
public:
void fun(){
cout<<"hello"<<endl; //成员函数
}
private:
int a; //成员变量
}; //必须以;结尾
定义类的两种方法:
- 声明和定义都放在类中
class A{
public:
void fun(){ //在类中定义的方法默认为inline
cout<<"hello"<<endl;
}
private:
int a;
};
- 在类中声明,在类外定义
class A{
public:
void fun();
private:
int a;
};
void A::fun() //在类外定义的函数必须加域解析符修饰,表明属于哪一个类
{
cout<<"hello"<endl;
}
访问限定修饰符
一个类将数据和方法封装后,提供接口给对象使用。这些接口一般都是有访问权限的。
一个类中提供三种访问限定修饰符:public(共有) private(私有)protected(受保护)
在类中每个限定符的作用范围为从一个限
定符开始到另一个限定符开始
- public 可以访问 public private protected
- protected 可以访问 protected private
- private 可以访问private
访问权限的范围是在不断缩小的
- public 成员可以在类外直接访问
- private 和 protected 不能在类外直接访问
访问限定符是在编译时起作用,等到映射到内存后便不再起作用
类的作用域:
类所定义的数据于方法都只能在类的作用域之内,如果在类外需要使用::修饰,来表明其类域 ,与之前在类外定义对象相同;
- 成员变量在类中具有全局属性
- 应避免函数参数名与变量名同名
类的大小:一个类的大小为其变量的大小,计算内存大小是应遵循结构体的内存对齐规则;
一个空类的而大小为一个字节;
this指针
在类中存在一个隐藏的this指针,指向当前对象内存的第一个字节
- this指针的类型为 类类型const
- this 指针必须在成员函数内部使用 指向当前对象,但不属于当前对象
this指针是成员函数隐藏的第一个参数,不用用户传递,属于自动传递