C++
阿瑞不会C++
菜菜
展开
-
C++继承
继承允许我们一句另一个类来定义一个新的类,这样做到达了重用代码,和提高执行率的效果。当创建一个类时,不需要重新编写的成员变量和成员函数,只需指定新建的类继承了一个已有的类即可。这个已有的类称之为基类(父类),新建的类称之为派生类(子类)一个类可以继承多个父类,它可以从多个基类继承数据和函数。我们使用一个类派生列表来指定有哪些基类代码如下。如上图:子类中包含了父类中的两个函数eat()和fun()以及成员函数a。原创 2023-03-25 18:32:02 · 58 阅读 · 1 评论 -
C++多态
为了指定对象的虚表,对象内部包含了一个虚表的指针,来指向自己所使用的虚表,为了让每个包含虚表的类的对象都拥有一个虚表指针,编译器在类中添加了一个指针,*_vptr,来指向虚表。# 类C继承于类B,故类C可以调用类B的函数,但由于类C重写了C::vfunc2()函数,故Cvtbl的两个指针分别指向B::vfunc1()(指向继承的最近的一个类的函数)和C::vfunc2()。上表指出,一个继承类的基类如果包含虚函数,那这个继承类也拥有自己的虚表,故这个继承类的对象也包含一个虚表指针,用来指向它的虚表。原创 2023-03-30 18:07:01 · 51 阅读 · 0 评论 -
C++析构函数
析构函数是作用于对象的销毁工作,清空对象所占有的堆区内存析构函数实在释放对象的时候自动调用,栈区对象自动释放,堆区对象需要手动释放delete才会调用析构函数。没实现析构函数的时候,编译器会自动实现默认的析构函数,里面什么也不做。· 编译器在对象销毁前会自动调用析构函数,不需要手动调用。· 析构函数不可以有参数,因此不可以发生重载。· 函数名称与类名相同,但是前面要有~· 没有返回值 ~类名(){}原创 2023-04-07 17:46:40 · 167 阅读 · 0 评论 -
C++类和对象: 封装
创建一个简单的类class关键字+类的名字public://属性int age;//行为void fun()cout << "跑步" << endl;sun.fun();return 0;原创 2023-03-24 18:41:09 · 79 阅读 · 1 评论 -
C++纯虚函数和抽象类
如果父类中一个虚函数其自身的实现无意义。此时可以将虚函数定义为纯虚函数。拥有至少一个纯虚函数的类是抽象类(纯虚类)。纯虚类不能直接创建对象。子类只有重写了所有的虚函数后才能创建子类对象。包含纯虚函数的类叫做抽象类。抽象类是不允许实例化的。也就是说抽象类不能创建对象,其子类必须重写纯虚函数子类才能被实例化。“一个普通的虚函数在虚函数表中其函数指针就是一个有意义的值,如果是一个纯虚函数,那么,在虚函数表中,其函数指针的值就是。纯虚函数就是没有函数体,同时在定义的时候,其函数名后面要加上”原创 2023-04-10 19:35:29 · 81 阅读 · 0 评论 -
C++拷贝构造函数
也就是说使用已经存在的对象初始化另一个新的对象,赋值运算符是将一个对象的值赋值给另一个已经存在的对象,调用的是拷贝构造函数还是赋值运算符,主要看是否有新的对象产生。3、如果拷贝构造函数的参数是值传递的话,在初始化拷贝构造函数的参数时就会用实参去初始化一个新的对象(形参),进而会继续调用构造函数,继续初始化形参,因此会形成无限递归。用一个已经存在的对象去创建一个新的对象时,会调用拷贝构造函数,拷贝构造函数是把对象当作参数掺入,利用传入的对象生成一个新的对象,而赋值运算符是将对象的值赋值给一个已经存在的实例。原创 2023-04-09 17:29:19 · 136 阅读 · 0 评论 -
函数重载,函数参数默认值
答案:在编译.c文件的时候,只会给函数进行简单的重命名;所以加入两个函数名相同的函数在编译之后的函数名字照样相同;’后边是函数名“@@YA”表示参数表开始,后边的3个字符分别表示返回值类型,两个参数类型。在函数声明或函数定义的时候直接给形参赋值,这样在函数调用的时候不需要给形参传值,会使用它的默认值。答案:在.cpp文件中,虽然两个函数名一样,但是他们在符号表中生成的名称不一样。由于在.cpp文件中两个函数在符号表中的名称不一样,所以是可以编译通过的。(3)函数重载是一种静态多态;功能相似的函数名的数量,原创 2023-03-31 15:47:24 · 228 阅读 · 0 评论 -
C++构造函数
对象初始化时强制执行构造函数,如果没有自己实现构造函数,编译器会提供默认的构造函数。当我们使用new时,会先使用malloc申请一块堆区空间,然后调用构造函数为申请的空间赋值。构造函数是一个特殊的成员函数,名字与类名相同,创建类类型对象时由编译器自动调用,保证每个成员都有一个合适的初始值,并且在对象的生命周期内只会调用一次。(程序员没有定义),编译器会自动生成一个默认的。· 编译器在创建对象时自动调用对应的构造函数。:主要完成对象中资源的清理工作。:主要完成对象的初始化工作。类的六个默认的成员函数。原创 2023-04-04 18:38:05 · 54 阅读 · 0 评论 -
C++中的引用与const
C语言中的const修饰的变量不能当作常量使用,但是C++中的const修饰的变量可以当作常量使用。被const修饰的变量必须其引用也要被const修饰。就是为已经存在的变量取个别名,引用和引用的变量。引用在定义是必须初始化且不能被初始化为NULL。· 引用在定义时必须被初始化,指针没有要求。· 引用不能改变引用关系,而指针随意。· 没有NULL引用,有NULL指针。· 引用++和指针++表达的含义相同。引用实体和引用类型必须为同种类型。类型 &引用变量名称=变量名称。· 有多级指针,没有多级引用。原创 2023-03-23 21:14:41 · 49 阅读 · 0 评论