随笔分类 -  C++

摘要:1.c++标准库 === a.c++标准库并不是c++语言的一部分 b.c++标准库是有类库和函数库组成的集合 c.c++标准库中定义的类和对象都位于 std 命名空间 d.c++标准库的头文件都不带 .h 后缀 e.c++标注库涵盖了c库的功能 eg: include //c++的标准库 incl 阅读全文
posted @ 2019-11-16 10:09 人民广场的二道贩子 阅读(103) 评论(0) 推荐(0)
摘要:利用操作符重载的练习 === 注意事项: 1.赋值操作符(=)只能重载为成员函数 2.操作符重载不能改变原操作符的优先级(+, , , /) 3.操作符重载不能改变操作符的个数 4.操作符重载不应改变操作符的原有语义(3,4说明操作符重载只是对原有操作符功能的扩展,但是不能改变其本质的含义。比如:+ 阅读全文
posted @ 2019-11-16 09:43 人民广场的二道贩子 阅读(133) 评论(0) 推荐(0)
摘要:问题: + 操作符不能支持复数相加 解决方案: c++中的重载能够扩展操作符的功能 1.操作符重载 === a.通过 operator 关键字可以定义特殊的函数 b.operator的本质是通过函数重载操作符 语法: Type operator Sign(const Type p1, const T 阅读全文
posted @ 2019-11-15 15:27 人民广场的二道贩子 阅读(143) 评论(0) 推荐(0)
摘要:函数的重载必然发生在同一作用域中 === 全局函数,普通成员函数,静态成员函数三个函数与各自的同类型函数可以重载(同一作用域) 1.全局函数,普通成员函数以及静态成员函数之间是否可以构成重载? === 因普通成员函数和静态成员函数可以作用于同一个类中(同一作用域)所以,他们可以重载;而全局函数和他们 阅读全文
posted @ 2019-11-14 16:17 人民广场的二道贩子 阅读(133) 评论(0) 推荐(0)
摘要:1.友元的概念 === a.友元是c++中的一种关系 b.友元关系发生在 函数与类 之间或者 类与类 之间 c.友元关系是单项的,不能传递(充分不必要) 2.友元的用法 === a.在类中以friend关键字声明友元 b.类的友元可以是其它类或具体函数 c.友元不是类的一部分(函数,是外界的。类就不 阅读全文
posted @ 2019-11-14 15:41 人民广场的二道贩子 阅读(110) 评论(0) 推荐(0)
摘要:1.构造函数遇到的问题 === a.构造函数只提供自动初始化成员变量的机会 b.不能保证初始化逻辑一定成功(涉及到内存容易出错) c.执行return语句后构造函数立即结束 注:构造函数能决定的只是对象的初始状态,而不是对象的诞生 2.半成品对象 === 半成品对象:初始化操作不能按照预期完成而得到 阅读全文
posted @ 2019-11-14 10:28 人民广场的二道贩子 阅读(100) 评论(0) 推荐(0)
摘要:1.静态成员函数 === a.静态成员函数是类中特殊的成员函数(静态成员函数没有隐藏的this参数,不能 直接 去访问普通的成员函数和成员变量) b.静态成员函数属于整个类所有 c.可以通过 类名 直接访问公有 静态 成员函数(变量) d.可以通过 对象名 访问公有 静态 成员函数(变量) 静态成员 阅读全文
posted @ 2019-11-13 11:17 人民广场的二道贩子 阅读(155) 评论(0) 推荐(0)
摘要:1.静态成员变量 === a.静态成员变量属于整个类 b.静态成员变量的生命周期不依赖任何对象,它如全局变量一般。就是程序的运行周期 c.可以通过 类名 直接访问 公有 的静态成员变量 d.所以对象共享类的静态成员变量 e.可以通过对象名访问 公有 静态成员变量 静态成员变量的特性 a.在定义时直接 阅读全文
posted @ 2019-11-13 10:33 人民广场的二道贩子 阅读(139) 评论(0) 推荐(0)
摘要:1.当程序中存在多个对象的时候,如何确定这些对象的析构顺序? === 单个对象 单个对象创建时 构造函数 的调用顺序 a.调用父类的构造函数 b.调用成员变量的构造函数(调用顺序与声明顺序相同) c.调用类自身的构造函数 析构函数与对应的构造函数的调用顺序相反 多个对象 多个对象时,析构函数与构造顺 阅读全文
posted @ 2019-11-12 16:48 人民广场的二道贩子 阅读(208) 评论(0) 推荐(0)
摘要:1.下面程序输出什么?为什么? === include class Test { int mi; public: Test(int i) { mi = i; } Test() { Test(0); //直接调用了构造函数,会产生一个临时对象;Test(0)这个构造函数对这个临时对象进行初始化后。就被 阅读全文
posted @ 2019-11-10 11:42 人民广场的二道贩子 阅读(148) 评论(0) 推荐(0)
摘要:1.析构函数 === a.c++的类中可以定义一个特殊的清理函数:析构函数。析构函数的功能与构造函数相反。 b.定义: ~ClassName() 1).析构函数 没有参数 也 没有返回值类型声明 ; 2).析构函数在对象销毁时自动被调用 (因为没有参数,所以析构函数不存在函数重载的问题) inclu 阅读全文
posted @ 2019-11-09 16:43 人民广场的二道贩子 阅读(129) 评论(0) 推荐(0)
摘要:问题:c++中类可以定义多个对象,那么对象构造的顺序是怎么样的? === 1.局部对象 === 当 程序执行流到达 对象的定义语句是进行构造。 include class Test { private: int mi; public: Test(int i) { mi = i; printf("Te 阅读全文
posted @ 2019-11-09 16:04 人民广场的二道贩子 阅读(115) 评论(0) 推荐(0)
摘要:1.类成员的初始化 === c++中提供了初始化列表对 类 成员变量进行初始化 语法规则: 使用在构造函数的定之后,函数体之前 ClassNam::ClassName() : m1(v1), m2(v1, v2), m3(v3) //初始化列表 { //some other initialiaze 阅读全文
posted @ 2019-11-09 15:14 人民广场的二道贩子 阅读(143) 评论(0) 推荐(0)
摘要:1.思考:对象中成员变量的初始值是多少? === 在 栈 上创建对象时,成员变量初始为 随机值 在 堆 上创建对象时,成员变量初始为 随机值 在 静态存储区 上创建对象时,成员变量初始为 0值 include class Test { private: int i; int j; public: i 阅读全文
posted @ 2019-11-08 15:54 人民广场的二道贩子 阅读(143) 评论(0) 推荐(0)
摘要:第13课.进阶面向对象(上) === 1.类和对象基本概念 类 :是指一类事物,是一个抽象的概念。用于描述一类事物所特有的属性和行为。 对象:指的是属于某个类的具体实体。拥有所属类中描述的一切行为和行动。 类是一种模型,这种模型可以创建出不同的对象实体;对象实体是类模型的一个具体实例。 (类是一个概 阅读全文
posted @ 2019-11-05 17:01 人民广场的二道贩子 阅读(131) 评论(0) 推荐(0)
摘要:问题1:const什么时候为只读变量?什么时候是常量? === const常量的判别准则: a.只有用字面量初始化的const常量才会进入符号表(直接初始化过的const为常量) b.被使用其他变量初始化的const常量仍然是只读变量(间接初始化的const为只读变量) c.被volatile修饰的 阅读全文
posted @ 2019-11-05 09:48 人民广场的二道贩子 阅读(138) 评论(0) 推荐(0)
摘要:1.新型类型转换 === c++将强制类型转换分为4种不同的类型 static_cast const_cast dynamic_cast reinterpret_cast 用法: xxx_cast(Expression) static_cast === a.用于基本类型间的转换 b.不能用于基本类型 阅读全文
posted @ 2019-11-04 15:40 人民广场的二道贩子 阅读(133) 评论(0) 推荐(0)
摘要:1.动态内存分配 === a.c++中通过 new 关键字进行动态内存申请 b.c++中的动态内存申请是基于类型进行的 c.delete关键字用于内存释放 2.new关键字与malloc函数的区别 === a.new关键字是c++的一部分 malloc是由c库提供的函数 b.new以具体类型为单位进 阅读全文
posted @ 2019-11-04 14:48 人民广场的二道贩子 阅读(129) 评论(0) 推荐(0)
摘要:1.重载与指针 === typedef int ( PFUNC)(int a); int c = 0; PFUNC p = func; c = p(1); //which function to call 第一个 函数重载遇上函数指针 将重载函数名赋值给函数指针时 a.根据重载规则挑选与函数指针参数 阅读全文
posted @ 2019-11-03 14:40 人民广场的二道贩子 阅读(125) 评论(0) 推荐(0)
摘要:1.函数重载 === a.用同一个函数名定义不同的函数 b.当函数名和不同的参数搭配函数的含义不同 int func(int x) { return x; } int func(int a, int b) { return a + b; } int func(const char s) { retu 阅读全文
posted @ 2019-11-03 10:33 人民广场的二道贩子 阅读(116) 评论(0) 推荐(0)