目录
更多精彩内容尽在主页!!!!!!
1.对面向对象过程的认识
C语言是个面向过程的语言,我们在解决问题时要思考,解决问题的步骤。而C++关注的是对象,将一件事划分成不同的对象,通过对象的交互来解决问题,而不关注过程。
例:洗衣服
C语言步骤:
C++步骤:
2.类
其实类和结构体是很像的只不过在C语言叫结构体,在C++叫类。
在C++中结构体和类中都可以定义变量还可以定义函数,但是C++更喜欢用类表示,类的关键字为class。
class className
{
// 类体:由成员函数和成员变量组成
}; // 一定要注意后面的分号
注意:不建议在类中定义函数,在类中定义函数,很有可能会被当成内联函数处理。
建议像以下方法定义。
//放在.h文件中和
class Date
{
public:
//打印年月日的信息
void showdata();
public:
int _year;
int _month;
int _day;
};
//放在.cpp文件中
void Data::showdata()
{
cout<<_year<<" "<<_month<<" "<<_age<<endl;
}
2.1类的访问限定符和封装
一共有三个关键字,public,protect,private。
说明:
class Person
{
public:
void PrintPersonInfo();
private:
char _name[20];
char _gender[3];
int _age;
};
// 这里需要指定PrintPersonInfo是属于Person这个类域
void Person::PrintPersonInfo()
{
cout << _name << " "<< _gender << " " << _age << endl;
2.2类的实例化
类其实就是相当一个图纸,本身是没有空间的,需要定义出一个类并分配空间。
一个类可以实例化多个不同的对象。
class data
{
public:
int _year;
int _month;
int _day;
};
//int main()
//{
//data._year//这个是错误的 因为类没有空间无法访问
// return 0;
//}
int main()
{
data d1;
d1._year;//正确示范
return 0;
}
2.3如何计算类的大小
我们既可以在类里定义成员函数,又可以在类里面定义成员变量,那么类是如何计算大小的呢.
首先第一个问题在类里里面定义的成员函数,都不会放在类里,而是会放在公共代码段。
成员变量的计算可以参考结构体的内存对齐的规则,如果类为空的情况下,类的大小是一个字节,占一个字节的目的就是为了表示我定义这个空类是存在的。
3.this指针
观察下面的代码,大家会不会有个问题,就是调用Init的时候,这个init怎么找到d1的成员变量的?
主要的原因是,init还有一个参数this只不过被编译器隐藏了,Init完整的参数应该是
Init(Data* this, int year, int month, int day),调用init的时候会自动把当前的对象的地址取出来,传到this指针中,然后通过this指针访问该类的成员变量。
注意:this指针不允许在声明的时候加上,语法规定,加上编译器就会报错,调用的时候也不用给this指针传值。
class Date
{
public:
void Init(int year, int month, int day)
{
_year = year;
_month = month;
_day = day;
}
private:
int _year;
int _month;
int _day;
};
int main()
{
Date d1;
d1.Init(2023, 7, 20);
}