
C++
文章平均质量分 73
日常笔记
微微一笑倾城醉
努力的意义从来不是成功,而是不留遗憾。
展开
-
C++ --- 继承
在这个作用域内会定义类的成员,那么,当存在继承关系的时候, 派生类的作用域嵌套在基类的作用域之内,如果一个名字在派生类的作用域没有找到,编译器会继续到外层的基类作用域查找该名字的定义。如果涉及多层继承eg: A--> B--> C,只能直接调用,不能间接调用,C调用B的构造,B调用A的构造,如果C间接调用A的构造,B已经调用了A的构造,就重复了。赋值就是将现有的数据写入已分配好的内存,对象的内存只包含成员变量,所以对象之间的赋值是成员变量的赋值,成员函数不存在赋值问题,所以this指针不会发生变化。原创 2024-10-17 12:08:20 · 1289 阅读 · 0 评论 -
C/C++ --- const
所以。原创 2024-09-03 08:59:53 · 310 阅读 · 1 评论 -
C++ --- this指针
结果:我们定义了d1,d2,d3这样3个Date类的对象,这3个类对象共享void Print() 这个成员函数,那么在调用d1.print()函数的时候,在print()函数中它是怎么知道输出的是d1的年,月,日,而不是d2或是d3的呢?C++编译器给每个“非静态的成员函数“增加了一个隐藏的指针参数,让该指针指向当前对象(函数运行时调用该函数的对象),它的值是当前被调用的成员函数所在的对象的起始地址。我们不能显示地将this指针写出来,因为这是编译帮我们做的事情。原创 2024-05-19 15:50:54 · 306 阅读 · 1 评论 -
C++ --- 拷贝构造
调用func2函数结束时,对象d的生命周期就结束了,不是d赋值给了d1,而是在结束前执行return语句时,就调用了Date的拷贝构造复制了一个临时对象,然后把它赋值给了d1。只是将指针的地址赋值给新对象,两个对象共用一块地址空间,共享数据,其中一个对象修改数据,另一个数据也会被修改,不安全。重新开辟了一块地址空间,内容格式与拷贝对象一模一样,且两者完全独立的,分别拥有自己的数据和资源,其中一个对象修数据被修改,另一个数据不会被修改。就是用已存在的类类型对象创建新对象时由编译器自动调用 d2(d1)。原创 2024-05-14 18:29:17 · 336 阅读 · 2 评论 -
C++ --- 析构函数
析构函数(destructor)是一个特殊的成员函数。它与构造函数功能相反,主要功能是完成类的一些资源清理工作(并不是指删除对象),而是使这部分内存可以被程序分配给新对象使用。原创 2024-05-10 20:26:24 · 606 阅读 · 0 评论 -
C++ --- new和delete
new/delete和malloc/free基本类似,不同的是,new/delete申请释放的是单个元素的空间,new[ ]/delete [ ]申请释放的是连续的空间,此外,malloc申请失败会返回NULL,而new申请失败会抛异常。原创 2024-05-17 18:32:10 · 1524 阅读 · 1 评论 -
C++ --- 构造函数
编译系统是根据函数调用的形式去确定对应的函数。构造d1有3个参数,那么就调用对应参数类型和参数个数的构函数是:Date(int year, int month, int day )。2.构造函数中的赋值是在对象创建后对已经初始化的成员变量进行赋值。3.构造函数是建立对象时由系统自动执行的,而且只执行一次。1、我们不写,编译器自动生成的构造函数。重载方法:构造函数的名称相同,参数不同。3、我们自己写的全缺省的构造函数。提供不同的初始化的方法,供用户选用。2、我们自己写的无参的构造函数。原创 2024-05-09 20:39:59 · 381 阅读 · 2 评论 -
C++ --- 静态成员变量/函数
全局变量的值为各个函数所共享,各处都可以自由地修改全局变量的值,(全局变量的安全性得不到保证)很有可能失误,从而导致程序错误。1.静态成员变量是在所有对象之外单独开辟空间,在一个类中有一个或多个静态成员变量,所有的对象共享这些静态成员变量,都可以引用它。2.用类来定义一个对象之后,静态成员变量和静态成员函数也属于对象,所以,也允许通过对象名调用静态成员函数。2.在编译期初始化,那么在实际运行期都是确定的结构和逻辑,将带来更高的性能,因为编译器完成了一定的工作。在编译的时候进行初始化。原创 2024-05-08 20:50:05 · 191 阅读 · 2 评论 -
C++ --- 运算符重载
域运算符和sizeof运算符的运算对象是类型,而不是变量或一般表达式,不具备重载的特征。成员访问运算符和成员指针访问运算符不能重载是为了保证访问成员的功能不能被改变。返回值类型:T&,返回引用可以提高返回的效率,有返回值目的是为了支持连续赋值。C++不允许用户自己定义新的运算符,只能对已有的C++运算符进行重载。否则,就改变了运算符参数的个数。(或称 二元运算符),双目运算符有两个操作数,通常在运算符的左右两侧。1.重载不能改变运算符运算对象(即操作数)的个数。3.重载不能改变运算符的结合性。原创 2024-05-07 21:03:12 · 1198 阅读 · 0 评论