今天主要看了一下c++的类和对象,什么是类什么是对象,c++的结构体与类的区别,类中的变量,引用变量,指针,静态变量,成员函数,静态成员函数,都放在内存的哪一个空间里。
我们一个一个的说,类和对象的关系就不多说了,这个以前java的时候接触过,也算是深入理解吧,毕竟项目不是乱写出来的。
我们在一个一个的说,c++的结构体也能有继承,有成员函数那和类有什么区别呢,区别就在于类默认是私有的,结构体的数据和函数默认是公有的。
c++的空类占1个字节,表示存在。除此之外,该占几个字节就占几个字节。
c++的普通变量在栈,指针变量也在栈,静态变量在全局区,与程序共存亡,类的静态变量属于类,不实例化对象就可以使用,成员函数在代码区,静态成员函数也在代码区,成员函数和静态成员函数却别就是一个属于对象,一个属于类。还有引用变量,和常量必须在构造的时候就进行初始化,否则的话编译器就会报错。
今天还看了mutable修饰变量,mutable可以突破const成员函数限制。举个例子,就是如果一个成员函数被const所修饰,那么这个函数只能修改mutable变量,也就是不能修改自动变量。
构造函数还可以用explicit来声明,这样就能防止别人在初始化的时候使用等于号来初始化类。
一个类,默认是有3个函数,一个是空构造函数,一个是析构函数,一个是拷贝构造函数,这3个都是默认的,我们可以重写,也可已删除,重写就不多说了,删除的语法就是Myclass() = delete;,除了删除我们还可以保持默认Myclass() = default;,这就是方法了。
默认的拷贝构造函数是浅拷贝的,如果我们要求深拷贝,那么就需要我们进行重写了,我们手动分配内存,防止不同指针指向相同地址,
今天主要就说了说自己学了什么,我们明天继续,就对不住各位看官了。
我去刷牙,明天天气好的话继续跑步,加油,c++!