厦门专业网站制作,网站咨询弹窗怎么做,杭州网站建设招标,使用arcgis进行网站开发前言#xff1a;C初阶系列#xff0c;每一期博主都会使用简单朴素的语言将对应的知识分享给大家#xff0c;争取让所有人都可以听懂#xff0c;C初阶系列会持续更新#xff0c;上学期间将不定时更新#xff0c;但总会更的 目录
一、什么是面向对象编程
二、什么是类和如… 前言C初阶系列每一期博主都会使用简单朴素的语言将对应的知识分享给大家争取让所有人都可以听懂C初阶系列会持续更新上学期间将不定时更新但总会更的 目录
一、什么是面向对象编程
二、什么是类和如何定义类
1.类的概念
2.类的特点
3.访问限定符
4.如何定义类
5.类定义的小细节
6.类的大小如何计算
7.this指针
三、下期预告 一、什么是面向对象编程 在C语言中我们编写代码更多地是面向过程进行编写的通过分析出求解问题的步骤然后函数调用逐步解决问题。比方说洗衣服在C语言的实现就是打开洗衣机-放衣服进去-倒入洗衣液-关上洗衣机-启动洗衣机-洗衣机翻滚-洗衣机甩干......如此一步一步地实现。 而在C中更多的是面向对向对象进行编写的。洗衣服这个操作操作的对象便有4个洗衣机洗衣液衣服和人洗衣服在C的实现则是使用这4个对象互相交互实现的而人是不需要去关注洗衣机是如何去洗衣服的只需要把事情交给洗衣机干就行了。这便是面向过程编程和面向对象编程的区别。 二、什么是类和如何定义类
1.类的概念 其实在C语言的学习中我们已经接触到了类这一内容那便是我们的结构体 而在C中更喜欢将结构体称作类。在C语言中我们使用struct定义结构体在C中我们不仅可以通过struct定义类也可以通过class定义类。两种方式几乎一样只有一点是不太一样的后面在访问限定符中我们会讲到。 2.类的特点 相比于C语言中结构体的使用类的使用更显特别类的里面不止可以定义成员还可以定义成员函数更有趣的是它可以令部分内容为私有令部分内容为公有。什么是公有呢在类外面也可以访问而私有则相反只能在类中使用听上去是不是有点抽象没关系我们在之后的内容会有详细的讲解。 3.访问限定符 在讲解如何定义类之前我们还要再补充一点那便是访问限定符。类的访问限定符分为三种:public(公有的),protected(被保护的),private(私有的)private和protected在目前的学习中是可看作一样的之后需要使用到它们之间的特性时会特别强调当然这还要很久。回到之前的问题struct和class有什么区别 区别就在于struct定义的类默认是公有的class定义的类默认是私有的。 1. public修饰的成员在类外可以直接被访问 2. protected和private修饰的成员在类外不能直接被访问 3. 访问权限作用域从该访问限定符出现的位置开始直到下一个访问限定符出现时为止 4. 如果后面没有访问限定符作用域就到 } 即类结束。 4.如何定义类
方法1:声明和定义全部放在类中
#includeiostream
using namespace std;
class abc
{
public:
//公有的意味着可以被外界访问void init()//初始化函数{_a 520;_b nullptr;_c 13.14;}void print()//打印函数{cout _a endl;cout _b endl;cout _c endl;}
private:
//私有的不能被外界访问int _a;int* _b;double _c;
};
int main()
{abc a1;//创建一个类型为abc的变量a1;a1.init();//初始化a1.print();//打印
}
简单运行下 试着访问下私有报错 方法2:声明和定义分离:
在写类的成员函数时肯定会有同学想像之前一样将多个函数的定义写在同一个文件中。这是可以实现的
声明写在头文件中
定义写在对应文件中 一样可以运行出正确结果 5.类定义的小细节 不知道你们有没有发现博主在定义类的成员变量的时候在变量之前加了_定义了_a,_b,_c这样的变量为什么博主不直接定义abc呢当我们在进行赋值操作的时候令成员变量变为另一个参数时我们书写的代码很可能是这样的a对应ab对应bc对应c。 当有同名变量出现的时候编译器会根据就近原则进行运行也就是令100100200200300300并不会真正影响到我们创建的abc中的成员变量为了方便区分我们在创建类的时候通常会在成员变量前加_或者是后加_如此便可以很快速的识别出变量的用途对变量进行对应的赋值。 6.类的大小如何计算 先说一个结论类的计算是不包括this指针和成员函数的this指针等下会讲到。如何计算类的大小有如下规则(把结构体换成类即可) (1) 第一个成员在与结构体变量偏移量为0的地址处。 (2) 其他成员变量要对齐到某个对齐数的整数倍的地址处。 对齐数 编译器默认的一个对齐数与该成员大小的较小值。 VS中默认的值为8 (3) 结构体总大小为最大对齐数每个成员变量都有一个对齐数的整数倍。 (4) 如果嵌套了结构体的情况嵌套的结构体对齐到自己的最大对齐数的整数倍处结构体的整 体大小就是所有最大对齐数含嵌套结构体的对齐数的整数倍。 自定义类型详解_大海里的番茄的博客-CSDN博客
博主写的这篇文章有更详细的解答感兴趣的同学可以去看一下。
7.this指针 学过C语言的同学看这个传递变量的过程一定会觉得怪怪的:为什么不用.或者-就能够修改结构体的成员变量呢(类)那是因为我们C有一个隐藏的变量被传递过去了那便是this指针this指针存放了你所传递变量的地址 且在中所有“成员变量”的操作都是通过该指针去访问。只不过所有的操作对用户是透明的即用户不需要来传递编译器自动完成。 当然你想要显示的实现变量的访问过程也是可以的两者没有区别。如果你之前写的是C语言现在一定会很爽QAQ。 最后需要提醒的一点细节便是this指针为了方便调用一般存储在寄存器上。 三、下期预告
下一回我们来聊下构造函数和析构函数这周必出餐QAQ
好了今天的分享到这里就结束了感谢各位友友的来访和阅读祝各位友友们前程似锦O(∩_∩)O