C++ 很久未用,有些遗忘,现在再复习一下。。。。。
链接是孙鑫老师的MFC视频,里面有讲C++
https://www.bilibili.com/video/av/?p=2
首先是结构体:
#include
//#include
//using namespace std; //注释的地方和未注释的是一样的效果, struct Point{ //C语言结构体中是不可以有函数存在,而C++可以 public: int x; int y; void output(){ cout<
然后是class 类
#include
class Point{ public: int x; int y; void init(){ x=0; y=0; } void output(){ cout<
结构体和类的唯一区别就是: 结构体和类具有不同的默认访问控制属性。
类中,对于未指定访问控制属性的成员,其访问控制属性为私有类型(private)
结构体中,对于未指定任何访问控制属性的成员,其访问控制属性为公有类型(public)
C++中,不使用结构体丝毫不会影响程序的表达能力。C++之所以要引入结构体,是为了保持和C程序的兼容性。
但有时仍会在C++中使用结构体,是因为,可以使用结构体将不同类型数据组成整体,方便于保存数据。(若用类来保存,因类中成员默认为私有,还要为每个数据成员特定函数来读取和改写各个属性,比较麻烦。)
以上区别来源:https://www.cnblogs.com/Carrie-0173/p/6357715.html
构造函数
下面是一个带有构造函数的类
#include
class Point{ public: int x; int y; Point(){ //构造函数 x=0; y=0; } void output(){ cout<
运行时会发现,虽然没有去调用赋值,它依然自动调用赋值,也就是说明运行类的时候,构造函数是自动一起运行的。
构造函数可以初始化其内部成员,构造函数重要的作用是创建对象本身,C++规定每一个类必须有一个构造函数(如果没有提供任何构造函数,那么C++会提供一个默认的构造函数,默认的构造函数是不带参数的构造函数,它只负责创建对象,而不进行任何初始化工作,如果一个类提供的构造函数,不管是否带参数,C++就不再提供默认的构造函数,也就是说一个类定义了一个带参数的构造函数,还想要一个不带参数的构造函数,则需自己定义),没有构造函数就不能创建任何对象。一个对象的产生就会占据一定的内存空间,而内存的分配就是由构造函数实现的。
析构函数
当一个对象的生命周期结束,需要将内存进行回收的时候,这就需要调用到析构函数来进行内存的释放
#include
class Point{ public: int x; int y; Point(){ //构造函数 x=0; y=0; } ~Point(){ //析构函数 } void output(){ cout<
析构函数不允许又返回值,更重要的是析构函数中不允许带参数,并且一个类中只允许有一个析构函数。
虽然构造函数和析构函数中也没有写到,内存的分配和释放,但是确起到了内存分配和释放的效果,这是由于,构造函数和析构函数是提供给系统调用的,具体操作由系统去完成。
函数的重载
#include
class Point{ public: int x; int y; Point(){ //1 x=0; y=0; } Point(int a,int b){ //2 x=a; y=b; } //1和2是同名不同参的函数,这是重载 ~Point(){ } void output(){ cout<
重载构成的条件,函数的参数类型和参数个数不同,才能构成重载。
比如:1 void output()和 2 int output(),由于参数个数一样,而不构成重载;
1 void output(int a,int b=10) 和2 void output(int a),由于参数类型一样,而不构成重载。( void output(int a,int b=10)中第二个参数有一个缺省值,也就是不用去赋值的数,那么当传来一个参数时,1和2都可以被调用)
发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/214635.html原文链接:https://javaforall.net
