“长风破浪会有时,直挂云帆济沧海”
🚀作者:编程路上一只狗
🚀博客主页:编程路上一只狗
🚀归属专栏:C++学习这里还会更新c++其余的学习教程哦,会随着学习不断地深入而更新的
🚀想叨叨几句:我是大一计科专业的学生,优快云新人一枚,我会记录自己的学习日常,并且帮助大家查漏补缺,点点关注不迷路哦,多多支持,在学习的道路上大家共同进步!如果有地方出现错误或者不足,还望在评论区留言或者私信,我们一起交流进步!respect,向你致敬。
目录
一、类与对象(上)
在学习类和对象之前我么们要知道
怎么理解呢,我给大家举个例子:
外卖系统
面向过程:下单、接单、送餐的三个过程。
面向对象:客户、商家、骑手,并且关注的是这三个对象 之间的关系
2.类的引入
在c语言的学习中,我们已经学了结构体,但是在c语言的规定中结构体只能定义变量,但是C++中在结构体中不仅可以定义变量,也可以定义函数。
struct Student
{
void InitStudentInfo(const char* name, const char* gender, int age)
{
strcpy(_name, name);
strcpy(_gender, gender);
_age = age;
}
void PrintStudentInfo()
{
cout<<_name<<" "<<_gender<<" "<<_age<<endl;
}
char _name[20];
char _gender[3];
int _age;
};
那么在C++中类就有两种定义方式其中一种就是struct,但是在c++中我们更习惯用class定义类。
3.类的定义
3.1类的定义语法
class className
{
// 类体:由成员函数和成员变量组成
}; // 一定要注意后面的分号
3.2类的两种定义方式
1.声明和定义全部放在类中
struct Student
{
void InitStudentInfo(const char* name, const char* gender, int age)
{
strcpy(_name, name);
strcpy(_gender, gender);
_age = age;
}
void PrintStudentInfo()
{
cout<<_name<<" "<<_gender<<" "<<_age<<endl;
}
//以上两个函数就是声明和定义放在一起
char _name[20];
char _gender[3];
int _age;
};
2.声明和定义分离(声明.h定义.cpp)
以下为了方便演示就在类外面定义的,大家了解就行,注意要加上类的作用域Student::
struct Student
{
void InitStudentInfo(const char* name, const char* gender, int age);
void PrintStudentInfo();
//以上两个函数就是声明
char _name[20];
char _gender[3];
int _age;
};
void Student::InitStudentInfo(const char* name, const char* gender, int age)
{
strcpy(_name, name);
strcpy(_gender, gender);
_age = age;
}
void Student::PrintStudentInfo()
{
cout<<_name<<" "<<_gender<<" "<<_age<<endl;
}
以上两种方式各有好处,但是一般在项目工程中我们一般采用第二种。
4.类的访问限定符以及封装
4.1访问限定符

4.2经典面试问题
4.3封装
封装:将数据和操作数据的方法进行有机结合,隐藏对象的属性和实现细节,仅对外公开接口来和对象进行交互。
5.类的作用域
struct Student
{
void InitStudentInfo(const char* name, const char* gender, int age);
void PrintStudentInfo();
char _name[20];
char _gender[3];
int _age;
};
void Student::InitStudentInfo(const char* name, const char* gender, int age)//类的作用域
{
strcpy(_name, name);
strcpy(_gender, gender);
_age = age;
}
void Student::PrintStudentInfo()//使用了类的作用域
{
cout<<_name<<" "<<_gender<<" "<<_age<<endl;
}
6.类的实例化

7.类对象模型
7.1计算类的大小
// 类中既有成员变量,又有成员函数
class A1 {
public:
void f1(){}
private:
int _a;
};
// 类中仅有成员函数
class A2 {
public:
void f2() {}
};
// 类中什么都没有---空类
class A3
{};
7.2结构体内存对齐规则
8.this指针
8.1this指针的引出
我们先用日期类来举一个例子:
class Date
{
public :
void Display ()
{
cout <<_year<< "-" <<_month << "-"<< _day <<endl;
}
void SetDate(int year , int month , int day)
{
_year = year;
_month = month;
_day = day;
}
private :
int _year ; // 年
int _month ; // 月
int _day ; // 日
};
int main()
{
Date d1, d2;
d1.SetDate(2018,5,1);
d2.SetDate(2018,7,1);
d1.Display();
d2.Display();
return 0;
}
这里要注意哦
1.this指针是隐含的 ,是编译器编译的时候加的,但是我们并不能在显示和调用的时候自己添加
2.可以在成员函数中成员可以使用this指针(自己显示的加出来)
8.2this指针的特性
二.未完待续
此次类和对象将会分三个文章写,上篇中篇和下篇,如果喜欢的小伙伴们可以关注一下我哦,后续我将会分享更多学习内容,如果有什么疑问可以在评论区留言或者私信我,我看见就会回复哦!
本文介绍了C++中类与对象的基础概念,包括类的定义、访问限定符、封装、作用域、实例化,以及this指针的原理。通过外卖系统的例子,解释了面向对象与面向过程的区别。后续会继续探讨类对象模型、内存对齐和经典面试问题。

61万+

被折叠的 条评论
为什么被折叠?



