在学习C语言的时候,我们面向的是过程,关注的是过程,分析出求解问题的步骤,通过函数调用逐步解决问题
但在C++,我们是面向对象的,关注的是对象,将一件事情拆分成不同的对象,靠对象之间的交互完成
因此,在C++中,有了类的概念
一.类的定义
class classname
{
......//类的内容由成员函数和成员变量组成
};//注意要写分号
class为定义类的关键字,ClassName为类的名字,{}中为类的主体,注意类定义结束时后面分
号不能省略。
类体中内容称为类的成员:类中的变量称为类的属性或成员变量; 类中的函数称为类的方法或者
成员函数。
类的定义有两种方式
- 定义和声明都在类中实现
- 在头文件中声明,在.cpp文件中定义,但要记住定义中要在函数名前加上"类名::"
比如: int classname::add()
二:类的访问限定符
访问限定符分为三种,分别为public(公有),protected(保护),private(私有)
访问限定符的使用
class classname
{
public:
.......
private:
.......
protected:
.......
}
//如果不写访问限定符,class默认为public,struct默认为private
访问限定符说明
1. public修饰的成员在类外可以直接被访问
2. protected和private修饰的成员在类外不能直接被访问(此处protected和private是类似的)
3. 访问权限作用域从该访问限定符出现的位置开始直到下一个访问限定符出现时为止
4. 如果后面没有访问限定符,作用域就到 } 即类结束。
5. class的默认访问权限为private,struct为public(因为struct要兼容C)
三:this指针
1.this指针概念
首先可以看个代码
class A
{
public:
void inite(int a,int b)
{
_a = a;
_b = b;
}
private:
int _a;
int _b;
}
int main()
{
A d1,d2
d1.inite(1,2);
d2.inite(3,4);
return 0;
}
在C++中成员变量和成员函数是分开存储的,每一个非静态成员函数只会诞生一份函数实例,也就是说多个同类型的对象会共用一块代码。
那么问题是:这一块代码是如何区分哪个对象调用自己的呢?
就如同上面的d1和d2
C++中通过引入this指针解决该问题,即:C++编译器给每个“非静态的成员函数“增加了一个隐藏
的指针参数,让该指针指向当前对象(函数运行时调用该函数的对象),在函数体中所有“成员变量”
的操作,都是通过该指针去访问。只不过所有的操作对用户是透明的,即用户不需要来传递,编
译器自动完成
this指针是隐含每一个非静态成员函数内的一种指针,this指针不需要定义,直接使用即可。
2.this指针的特性
1. this指针的类型:类类型* const,即成员函数中,不能给this指针赋值。
2. 只能在“成员函数”的内部使用
3. this指针本质上是“成员函数”的形参,当对象调用成员函数时,将对象地址作为实参传递给
this形参。所以对象中不存储this指针。
4. this指针是“成员函数”第一个隐含的指针形参,一般情况由编译器通过ecx寄存器自动传
递,不需要用户传递