
C++语言总结及案例
文章平均质量分 66
润小仙女
这个作者很懒,什么都没留下…
展开
-
第五章 类的继承与派生之——基类与派生类指针的相互转换
一个公有派生类的对象的地址可以直接赋值给一个基类指针,使基类指针指向派生类的对象。当派生类指针指向基类对象时,必须要将基类对象进行强制类型转换。【示例】使用指针的情况。原创 2024-02-27 15:09:33 · 503 阅读 · 0 评论 -
第五章 类的继承与派生之——多层次的派生
1、处于同一继承层次的各基类构造函数的调用顺序取决于定义派生类时所指定的基类的顺序,与派生类构造函数中所定义的成员初始化列表顺序无关。如果类中有对象成员,那么对象成员构造函数的调用顺序与对象在类中声明的顺序一致。原创 2024-02-04 08:59:21 · 390 阅读 · 0 评论 -
第五章 类的继承与派生之——类之间的关系
1、使用已有类编写新的类有两种方式: 继承和组合继承关系也称为 “is a” 或 “是” 关系组合关系也称为 “has a” 或 “有” 关系2、封闭类如果一个类的成员变量是另一个类的对象,则为封闭类定义封闭类构造函数的一般形式为:类名: :类名(形参表) : 内对象1 (形参表),内对象2 (形参表),~{类体}*在派生类也是封闭类的情况下,构造函数的初始化列表不但要指明基类对象的初始化方式,还要指明成员的初始化方式。生成派生类对象时,会引发一系列构造函数的调用,顺序是: 先根据派生类层原创 2024-02-02 08:55:58 · 391 阅读 · 0 评论 -
第五章 类的继承与派生之——派生类的构造函数和析构函数
1、在执行一个派生类的构造函数之前,总是先执行基类的构造函数。派生类对象消亡时,先执行派生类的析构函数,再执行基类的析构函数。※定义派生类的构造函数的一般形式如下:派生类名: : 派生类名 (参数表0) : 基类名(参数表){...//函数体}2、派生类构造函数执行的一般次序如下:1) 调用基类构造函数,调用顺序按照它们被继承时声明的顺序 (从左向右)2) 对派生类新增的成员变量初始化,调用顺序按照它们在类中声明的顺序。3) 执行派生类的构造函数体中的内容原创 2024-02-01 09:13:06 · 1016 阅读 · 0 评论 -
第五章 类的继承与派生之——访问控制
1、公有继承public: 访问权限保持不变,派生类得到了基类中除构造函数、析构函数之外的所有成员,类型兼容规则:(1)派生类的对象可以赋值给基类对象;(2)派生类的对象可以用来初始化基类的引用;(3)派生类对象的地址 (指针) 可以赋值给基类指针2、私有继承private :基类中的公有成员和保护成员都以私有成员身份出现在派生类中,在派生类的成员函数可以直接访问它们。3、保护继承protected: 基类的公有成员和保护成员都以保护成员的身份出现在派生类中,而基类中的私有成员不可访问原创 2024-02-01 09:12:27 · 862 阅读 · 0 评论 -
第五章 类的继承与派生之——类的继承与派生
1、通过已有的类来建立新类的过程,叫做“类的派生”,原来的类叫做“基类”,新建立的类则叫做“派生类”。从类的成员角度看,派生类自动地将基类的所有成员作为自己的成员,这叫做“继承”。基类和派生类又可以分别叫做“父类”和“子类”,有时也称为“一般类”和“特殊类”。从一个或多个以前定义的类 (基类) 产生新类的过程称为派生这个新类称为派生类。派生的新类同时也可以增加或者重新定义数据和操作,这就产生了类的层次性。类的继承是指派生类继承基类的数据成员和成员函数。继承常用来表示类属关系,不能将继承理解为构成原创 2024-01-31 09:01:32 · 1770 阅读 · 0 评论 -
第四章 运算符重载之——重载流插入运算符和流提取运算符
1、cout > 流提取运算符重载使之用于自定义的类对象,只能重载为类的友元重载流插入运算符的一般格式:ostream &operator > ( istream & input , 类名&对象名 ) {……return input}原创 2024-01-31 09:01:12 · 1034 阅读 · 0 评论 -
第四章 运算符重载之——重载强制类型转换运算符
1、类型转换运算符:在C++中,类型的名字 (包括类的名字) 本身也是一种运算符,即强制类型转换运算符,是单目运算符,只能重载为成员函数,经过重载后,“(类型名) 对象”,就等价于“对象.operator 类型名( )”2、重载强制类型转换运算符时,不需要指定返回值类型,因为返回值类型是确定的。经过适当重载后,“(类型名)对象”这个对对象进行强制类型转换的表达式就等价于“对象operator 类型名 ( )”,即变成对运算符函数的调用。原创 2024-01-30 09:07:57 · 633 阅读 · 0 评论 -
第四章 运算符重载之——重载赋值运算符
对任一类X,如果用户没有自定义的赋值运算符函数,那么编译系统将自动地为其生成一个默认的赋值运算符函数,默认赋值运算符函数重载形式如下:X&X : : operator = ( const X & source ) {成员间赋值}2、重载赋值运算符解决赋值不兼容问题,应该注意两点:(1)赋值运算符必须重载为成员函数(2) 为了保持与通常意义下的赋值运算符的功能相一致,应该让重载的赋值运算符仍然能连续使用,所以operator =函数通常要返回引用3、浅拷贝和深拷贝原创 2024-01-29 09:29:28 · 440 阅读 · 0 评论 -
第四章 运算符重载之——重载自增自减运算符
1、自加++、自减一运算符可以重载,但有前置和后置之分,用于对象也是如此2、C++规定,在重载“++”时,允许写一个增加了无用int类型形能的版本,编译器处理“++”“--”前置表达式时,调用参数个数正常的重载函数;处理后置的表达式时,调用多出一个参数的重载函数。重载的后置运算符的形参表中有一个int 类型的参数,它仅表明重载的是后置运算符,不需要定义形参变量,在函数体中也不必使用它。3、单目运算符“++”重载为类的成员函数,单目运算符“- -”重载为类的友元函数原创 2024-01-29 09:29:03 · 628 阅读 · 0 评论 -
第四章 运算符重载之——运算符重载的概念
1、运算符重载就是给已有的运算符赋予多重含义,使同一个运算符作用于不同类型的数据时产生不同的行为。运算符重载的目的是使得运算符也能够用来操作对象。2、C++允许重载大多数运算符,不允许重载的有:成员访问运算符 .成员指针访问运算符 .* 、 ->*域运算符 : :长度运算符 sizeof条件运算符 ? :预处理符 #用于类运算的运算符通常都要重载,= 默认重载为成员变量的复制& 默认重载为返回任何类对象的地址3、运算符重载的实质是编写以运算符为名称的函数,使用原创 2024-01-26 14:48:39 · 1318 阅读 · 0 评论 -
第三章 类和对象进阶之——this指针
1、概念C++规定,当调用一个成员函数时,系统自动向它传递一个隐含的参数,该参数是一个指向调用该函数的对象的指针,称为this指针静态成员函数是类具有的属性,并不作用于某个对象,其内部不能使用this指针。myDate: :myDate (int year, int month, int day) {this->year = year;this->month = month;this->day = day;}原创 2024-01-26 09:39:28 · 317 阅读 · 0 评论 -
第三章 类和对象进阶之——友元
1、概念类很好地实现了封装和隐藏,一个类里的私有成员和保护成员只能由类内部的成员函数访问,外部不能通过对象直接访问。但有时为了提高编程效率,需要允许一个函数或类访问另外一个类中的私有成员或保护成员,这时可将这些类或函数声明为类的友元。友元函数不是类的成员函数,在函数体中使用不能用“对象名.对象成员名”友元函数在被访问类中的声明格式:friend原创 2024-01-26 09:38:30 · 450 阅读 · 0 评论 -
第三章 类和对象进阶之——常量成员和常引用成员
常量成员和常引用成员1、const修饰的各种情况(1)常量:使用const修饰的量称为常量类的常量成员变量: const修饰的类成员变量,只能通过构造函数的成员初始化列表进行初始化。一般格式 const 数据类型 常量名 = 表达式 ;(2)常量函数: 使用const修饰的函数(3)常量对象:定义类的对象时使用const修饰. 对于常量对象只能调用常量函数,常量对象各属性值不能修改 一般格式 类型说明符 函数名(参数) const;注:通过常量对象仅可以调用常量成员函数,是因为常量成员函数原创 2024-01-25 11:32:49 · 514 阅读 · 0 评论 -
第三章 类和对象进阶之——成员对象和封闭类
成员对象和封闭类1、概念一个类的成员变量如果是另一个类的对象,则该成员变量称为成员对象,包含成员对象的类叫作封闭类。2、封闭类构造函数初始化列表对于成员对象,初始化列表的“参数表”中列出的成员对象构造函数 (指明了该成员对象如何初始化)封闭类生成对象时,先执行所有成员对象的构造函数,然后执行封闭类的构造函数,成员对象构造函数与在类中定义的顺序一致,析构函数的调用则相反3、封闭类对象生成时,先执行所有成员对象的构造函数,然后执行封闭类自己的构造函数。成员对象构造函数的执行次序与成员对象在类定义中的说原创 2024-01-25 11:32:07 · 498 阅读 · 0 评论 -
第三章 类和对象进阶之——变量及对象的生存期和作用域
全局变量及静态变量分配的空间在全局数据区,生存期为整个程序的执行期间。原创 2024-01-23 13:07:19 · 586 阅读 · 0 评论 -
第三章 类和对象进阶之——类的静态成员
局部变量:块内定义的变量,static修饰的静态局部变量,在整个运行期间都存在,仅在定义的块中有效。使用static修饰的全局变量是静态全局变量,仅在该文件内有效。在类定义中声明静态成员变量,必须在类体外定义静态成员变量的初值,不能在类体内赋初值。类的静态成员被类的所有对象共享,不论有多少对象,静态成员都只有一份保存在公用内存中。在类体内定义类的成员时,在前面添加static关键字。类的静态成员:静态成员变量、静态成员函数。【示例】自动变量和静态变量的定义和使用。不能在静态成员函数中访问非静态成员。原创 2024-01-22 18:30:29 · 682 阅读 · 0 评论 -
第三章 类和对象进阶之——析构函数
析构函数:也是成员函数的一种,名字与类名相同,但要在类名前面加上一个“~”字符,析构函数没有参数,也没有返回值。原创 2024-01-19 10:12:38 · 377 阅读 · 0 评论 -
第三章 类和对象进阶之——构造函数
定义构造函数:构造函数的名字应与类名同名。并在定义构造函数时不能指定返回类型,即使void类型也不可以。可以设计多个构造函数,编译系统根据对象产生的方法调用相应的构造函数,即构造函数允许重载。在类体外定义构造函数有三种形式:假设类的成员变量是 x1,x2,·…,xn。原创 2024-01-19 10:11:43 · 980 阅读 · 0 评论 -
第二章 面向对象的基本概念之——类成员的访问范围
函数声明的形参radius的作用域仅在形参列表的左右括号之间,在程序其他地方不可引用 ,函数声明中往往不写形参名。标识符的作用域:函数原型作用域、局部作用域(块作用域类作用域、命名空间作用域)则在类外使用对象objx能够访问的成员是________________标识符的可见性:在程序的哪个区域可以使用C++:程序中使用大括号括起来的一段程序块,其作用域。函数原型作用域,C++中最小的作用域。标识符的作用域:标识符的有效范围。【示例】【填空题】若有以下说明,【示例】2 类成员访问示例。原创 2024-01-19 10:11:03 · 405 阅读 · 0 评论 -
第二章 面向对象的基本概念之——访问对象的成员
例题3:【程序设计题】类book,含有2个数据成员num编号和price价格,有成员函数set和display分别输入和显示书的编号和价格,在main中调用所有成员函数。例题4:【选择题】对于下面定义的类Myclass,在函数 f( )中将对象成员n的值修改为50的语句应该是 ()【正确答案】: 【a.fun (1);】改为: 【a.fun (1,2);例题2:【程序设计题】下面是一个类的测试程序,请设计出能使用如下测试程序的类。【答案解析】:n是私有的,不能直接赋值,指针->成员函数(参数)原创 2024-01-18 09:38:29 · 767 阅读 · 0 评论 -
第二章 面向对象的基本概念之——类的定义
类名的定义遵循一般的标识符命名规则,即字母,数字和下划线的组合,大小写敏感,但不能以数字开头,也不能和系统中使用的关键字完全相同,类定义以”;”结束,大括号中的部分称为类体。原创 2024-01-18 09:36:51 · 550 阅读 · 0 评论 -
第二章 面向对象的基本概念之——面向对象思想的特点
封装:将对象的属性及实现细节结合在一起,构成独立的实体。封装可以将对象的部分属性和函数隐藏起来,对外不可见,将另外一部分对外可见,提供操作的接口。A. 通过封装,对象的全部属性和操作结合在一起,形成一个整体。B. 通过封装,一个对象的实现细节被尽可能地隐藏起来。C. 通过封装,每个对象都成为相对独立的实体。,使得新类从现有的类派生出来,达到代码。D. 通过封装,对象的属性都是不可见的。【正确答案】:封装 ,继承。,继承体现了类的层次关系。C.一个类的对象只有一个。,类是对象的一个抽象。原创 2024-01-17 11:17:49 · 558 阅读 · 0 评论 -
第二章 面向对象的基本概念之——结构化程序设计
对变量进行的操作函数可能散布在程序的各处,如果变量类型有所变化,则相关的函数都需要修改,程序的维护开销较大。程序规划庞大时,会变得难以理解、难以扩充、难以查错和难以复用。,将逻辑功能相关独立的程序设计成函数。程序=数据结构+算法。2、结构化程序设计的。原创 2024-01-17 11:14:48 · 396 阅读 · 0 评论 -
第一章 C++语言简介之——C++语言的程序结构
类型名 &引用名 = 同类型的某变量名;//声明引用引用相当于给变量取了个别名,aname和onelnt占用同一内存地址变量oneInt必须已进行初始化,不能声明引用的引用。不能通过常引用去修改其引用的变量//常引用。原创 2024-01-16 11:26:57 · 1182 阅读 · 0 评论 -
第一章 C++语言简介之——c++语言的特点
C++语言与C语言相比,在求解问题方法上进行的最大改进是。Windows环境下,由C++源程序文件编译而成的。原创 2024-01-16 09:25:44 · 547 阅读 · 0 评论