随笔分类 -  C/C++基础语法

摘要:find_if实现(模板函数) #include <iostream> #include <vector> #include <memory> #include <algorithm> class Test { public: void SetNum(int num) { _num = num; } 阅读全文
posted @ 2021-12-07 16:17 gd_沐辰 阅读(91) 评论(0) 推荐(0) 编辑
摘要:理论知识: 当类中声明虚函数时,编译器会在类中生成一个虚函数表 虚函数表是一个存储类成员函数指针的数据结构 虚函数表是由编译器自动生成与维护的 virtual成员函数会被编译器放入虚函数表中 当存在虚函数时,每个对象中都有一个指向虚函数表的指针(C++编译器给父类对象、子类对象提前布局vptr指针; 阅读全文
posted @ 2019-02-09 22:42 gd_沐辰 阅读(262) 评论(0) 推荐(0) 编辑
摘要:C++中对象的复制就如同“克隆”,用一个已有的对象快速地复制出多个完全相同的对象。一般而言,以下三种情况都会使用到对象的复制: (1)建立一个新对象,并用另一个同类的已有对象对新对象进行初始化,例如: (2)当函数的参数为类的对象时,这时调用此函数时使用的是值传递,也会产生对象的复制,例如: (3) 阅读全文
posted @ 2019-02-09 22:19 gd_沐辰 阅读(335) 评论(0) 推荐(0) 编辑
摘要:new与malloc的10点区别 1. 申请的内存所在位置 new操作符从自由存储区(free store)上为对象动态分配内存空间,而malloc函数从堆上动态分配内存。自由存储区是C++基于new操作符的一个抽象概念,凡是通过new操作符进行内存申请,该内存即为自由存储区。而堆是操作系统中的术语 阅读全文
posted @ 2018-07-18 14:41 gd_沐辰 阅读(187) 评论(0) 推荐(0) 编辑
摘要:C++中setiosflags()的用法 cout<<setiosflags(ios::fixed)<<setiosflags(ios::right)<<setprecision(2); setiosflags 是包含在命名空间iomanip 中的C++ 操作符,该操作符的作用是执行由有参数指定 区 阅读全文
posted @ 2018-03-11 20:14 gd_沐辰 阅读(207) 评论(0) 推荐(0) 编辑
摘要:从功能来看,有些程序非常相似,只是处理对象(数据)的类型不同 例 void sortArray(int b[],int len); void sortArray(double b[],int len); 可以考虑提供具有相同逻辑功能的程序,而将数据类型作为参数——类属编程 C++中的模板:类模板和函 阅读全文
posted @ 2018-01-09 17:03 gd_沐辰 阅读(222) 评论(0) 推荐(0) 编辑
摘要:程序执行中需要处理异常: 1.动态分配空间时可能不会成功 2.打开文件可能会失败 3.除法运算时分母可能为0 4.整数相乘可能溢出 5.指针可能越界等情况 异常处理方法一: 1.使用选择语句(if…else…) 2.判断异常情况,即时处理 3.正常程序流程和异常处理语句混在一起 4.程序员往往无法专 阅读全文
posted @ 2018-01-09 17:01 gd_沐辰 阅读(204) 评论(0) 推荐(0) 编辑
摘要:文件是什么? 文件是外存数据的组织单位。一个文件对应一批存放在外存(如硬盘、软盘、U盘)的数据,计算机以及计算机的使用者通过文件名实现对文件的操作(如复制、删除、内容修改)。 C++把一个文件看成是一个字节序列。 C++的文件类型 1.文本文件(也称ASCII文件)。文件中每个字节的内容是ASCII 阅读全文
posted @ 2018-01-09 16:55 gd_沐辰 阅读(220) 评论(0) 推荐(0) 编辑
摘要:多态性:在程序多次执行时,某一确定位置的函数调用执行了不同的函数体。 虚函数 虚函数的定义 1.在成员函数(非静态、非构造函数)原型前加上关键字virtual 2.类的虚函数通过继承向下传递,在派生类中既可以直接继承也可以重定义,重定义时函数原型前可以省略virtual,也可以改变访问模式(不提倡) 阅读全文
posted @ 2018-01-09 16:53 gd_沐辰 阅读(216) 评论(0) 推荐(0) 编辑
摘要:继承和派生 1.继承允许以现有的类为基础来构建新类 2.新类(派生类)继承现有类(基类)的属性和行为 3.派生类可以修改(改变权限或重定义)基类的属性和行为 4.派生类可以增加新的属性和行为 5.派生类对象也是基类对象 6.派生类对象和基类对象可以被统一管理 继承的三种方式 1.公有继承(publi 阅读全文
posted @ 2018-01-09 16:52 gd_沐辰 阅读(184) 评论(0) 推荐(0) 编辑
摘要:C++的所有运算符都可以被重载吗? . .* :: ?: sizeof 不能被重载 什么情况下需要考虑运算符重载? 当要把自定义类的对象用作运算符的操作数时,可以被重载的运算符中只有赋值运算符 = 和地址运算符 & 可直接用于对象的操作 运算符重载函数如何定义? 保持运算符的原有属性,作为类的成员函 阅读全文
posted @ 2018-01-09 16:51 gd_沐辰 阅读(190) 评论(0) 推荐(0) 编辑
摘要:如果某个(些)外部函数需要直接访问类的数据成员,怎么办? 方法一:数据公有 方法二:友元 友元函数 1.友元函数是一般函数或其它类的成员函数 2.友元函数具有访问类的所有成员的权限 3.声明友元函数的方法:friend + 函数原型 4.除非能带来极大的便利,否则不要使用友元 示例:使用友元函数修改 阅读全文
posted @ 2018-01-09 16:50 gd_沐辰 阅读(150) 评论(0) 推荐(0) 编辑
摘要:this指针 1.一个类的多个对象各自拥有类的数据成员的一个副本 2.类的成员函数则被其所有对象共享 3.一个类的不同对象响应相同的消息时,调用的是同一个函数 4.每个对象都有一个指向自身的this指针 5.对象调用成员函数时会将自己的this指针传递给成员函数(隐含参数) 6.成员函数访问对象的所 阅读全文
posted @ 2018-01-09 16:49 gd_沐辰 阅读(151) 评论(0) 推荐(0) 编辑
摘要:类(class)——是抽象数据类型,实现了对数据和函数的封装(必须通过接口函数才能操作数据) 数据成员 1.可以定义各种类型的变量、指针、数组等,甚至是其他类的对象 2.在类的定义中数据成员不能赋初值 3.数据成员一般放在private部分 4.数据成员也可以放在public部分,但不提倡 成员函数 阅读全文
posted @ 2018-01-09 16:48 gd_沐辰 阅读(263) 评论(0) 推荐(0) 编辑
摘要:结构类型定义的典型格式: struct <结构名> { <成员列表> }; 例子: struct student { int num; char name[20]; char sex; float score; }; 结构变量声明的典型格式: <结构名> <变量列表> ; 例子: student s 阅读全文
posted @ 2018-01-09 16:47 gd_沐辰 阅读(272) 评论(0) 推荐(0) 编辑
摘要:指针:具有确定属性的地址 属性决定了以该地址为起始地址的存储空间(数据单元)大小以及可以存放什么类型的数据 指针变量:可以存放指针的变量 指针的定义 指针变量声明 int *myPtr; 说明了一个指向int类型的指针变量myPtr int *myPtr1,i,*myPtr2, j; 可以说明指向任 阅读全文
posted @ 2018-01-09 16:46 gd_沐辰 阅读(208) 评论(0) 推荐(0) 编辑
摘要:一维数组声明 <存储类别> <元素类型> <数组名>[<元素个数> ]; 如: int a[10]; static double b[20]; 说明 1.一组连续的存储单元 2.具有相同的名字和类型 3.第一个元素的序号是 0 4.10 个元素的数组a: a[0], a[1] ... a[9] 初始 阅读全文
posted @ 2018-01-09 16:45 gd_沐辰 阅读(228) 评论(0) 推荐(0) 编辑
摘要:函数 模块化。C++的基本程序单位。 所有在函数体中说明的变量都是局部变量(仅在定义的函数中有效) 参数 函数间传递信息 局部变量 优点 分而治之(有利于程序开发) 避免代码重复,软件重用(重用已有的函数来构造新的程序) 抽象-隐蔽内部的细节 示例:寻找三个数中最大值和最小值 #include <s 阅读全文
posted @ 2018-01-09 16:39 gd_沐辰 阅读(186) 评论(0) 推荐(0) 编辑
摘要:程序的基本控制结构 顺序结构:常用的语句有表达式语句和复合语句。 选择结构:if语句、if-else语句、switch语句。 循环结构:while语句、do-while语句、 for语句。 其它:空语句、continue语句、break语句 、goto语句、return语句。 表达式语句示例: a 阅读全文
posted @ 2018-01-09 16:37 gd_沐辰 阅读(172) 评论(0) 推荐(0) 编辑
摘要:输入:从输入设备(如键盘、磁盘等)向计算机输入数据 输出:从计算机向输出设备(如显示器、打印机等)输出数据 通过流对象cin、cout分别进行流读取和流插入 字符输入输出函数包括: 字符输出函数 putchar 字符输入函数 getchar 注意:每执行一次只输入(输出)一个字符。 输出函数 put 阅读全文
posted @ 2018-01-09 16:34 gd_沐辰 阅读(377) 评论(0) 推荐(0) 编辑