posted @ 2023-03-13 09:43 乔55 阅读(14) 评论(0) 推荐(0)
posted @ 2023-03-13 09:42 乔55 阅读(44) 评论(0) 推荐(0)
|
摘要:
## 多态最常用的例子 ```cpp // 父类 class animal { public: virtual void eat() { cout eat(); ptr->sleep(); } void test() { animal a; person p; dog d; xxx_fun(&a); 阅读全文
posted @ 2023-03-13 09:42 乔55 阅读(44) 评论(0) 推荐(0)
摘要:
## 多态基本概念 ```cpp // 什么是多态 - 多态:由继承产生的相关的不同的类,其对象对同一消息作出不同响应 - 多态性:允许同一函数或操作符有不同的版本,不同对象执行不同的版本时具有多态性 - 编译时的多态性:表现为函数名、操作符重载 - 运行时的多态性:通过派生类和虚继承类来实现 - 阅读全文
posted @ 2023-03-13 09:41 乔55 阅读(103) 评论(0) 推荐(0)
摘要:
类模板详解 编译器不能为类模板推断模板参数类型,只能通过<>尖括号来指定模板参数类型 阅读全文
posted @ 2023-03-13 09:40 乔55 阅读(29) 评论(0) 推荐(0)
摘要:
## 友元的概念 ```cpp // 基本概念 - 在类Test内将外部XX声明为Test类的友元类或友元函数,则Test函数可以访问Test所有成员 - 友无关系3大特点 - 友元关系不能被继承 - 友元关系是单向的,如A是C是友元类,但并不表示C是A的友元类 - 友元关系不能传递性,如,A是B友 阅读全文
posted @ 2023-03-13 09:39 乔55 阅读(25) 评论(0) 推荐(0)
摘要:
## 继承与派生的基本概念 ```cpp // 子类与父类的关系 - 子类对象占内存空间大,可以直接将子类对象赋值给父类对象:parent p = c; - 子类对象占内存空间大,可以直接当做父类使用,只取其有用部分 - 父类指针可以指向子类对象。子类对象能满足父类指针的指向要求 - 子类指针不能直 阅读全文
posted @ 2023-03-13 09:39 乔55 阅读(55) 评论(0) 推荐(0)
摘要:
## 类的6个重要成员函数 ```cpp class Test { private: int data; public: // 1、普通构造函数 Test(int d = 0) :data(d){} // 2、拷贝构造函数 Test(const Test& that) { data = that.d 阅读全文
posted @ 2023-03-13 09:38 乔55 阅读(26) 评论(0) 推荐(0)
摘要:
## 基本概念 ```cpp // 常函数 - void getK(Time* const this)const{} - const在函数后边的含义是,该成员函数不能修改类成员变量 - 既然是针对于成员函数,那么普通构造函数就不能在其后边加const - 只有成员函数才能声明为const函数,普通函 阅读全文
posted @ 2023-03-13 09:38 乔55 阅读(34) 评论(0) 推荐(0)
摘要:
## this指针在于什么地方 ```cpp 1. // 每个普通成员函数的形参都隐含了:Time* const this,Time是类 2. // const成员函数形参隐含了:const Time* const this 3. // 调用成员函数时,会把该对象的地址传递给this指针 4. // 阅读全文
posted @ 2023-03-13 09:37 乔55 阅读(31) 评论(0) 推荐(0)
摘要:
## 运算符重载概念 ```cpp 1. // 运算符重载是C++强大的特性之一,运算符重载有以下几种限制 // 不可臆造新的运算符 // 不能改变运算符原有的优先级、结合性和语法结构,不能改变操作数个数 // 运算符重载不家使用过多 // 运算符重载含义必须清楚,不能有二义性 // 必须遵循函数重 阅读全文
posted @ 2023-03-13 09:36 乔55 阅读(77) 评论(0) 推荐(0)
摘要:
如何将基类的构造函数继承给派生类 class A { public: int i; int j; A(int i1, int j1){ } }; class B :public A { public: // using:让某个名字在当前作用域内可见。 // 此处using语句,会将基类的每个构造函数 阅读全文
posted @ 2023-03-13 09:36 乔55 阅读(60) 评论(0) 推荐(0)
摘要:
## 创建类对象的方式 ```cpp Time mytime; // 调用无参构造函数 Time mytime1(1, 12, 20); // 调用有参构造函数 Time mytime2{ 1,12,20 }; // 调用有参构造函数 Time mytime3 = { 1,12,20 }; // 调 阅读全文
posted @ 2023-03-13 09:35 乔55 阅读(68) 评论(0) 推荐(0)
摘要:
## RTTI基本概念 - RTTI:run time type identification,也叫运行时类型识别 - 通过RTTI,程序能够使用基类的指针或者引用来检查这些指针或引用所指对象的实际类型 - RTTI,可看成是系统提供给我们的一种功能,此种功能可以通过2个运算符来体现 - dynam 阅读全文
posted @ 2023-03-13 09:35 乔55 阅读(21) 评论(0) 推荐(0)
摘要:
临时对象详解 class Test { public: int a; int b; Test(int a1 = 0, int b1 = 0) :a(a1), b(b1) { cout << "普通构造" << endl; } Test(const Test& t) :a(t.a), b(t.b) { 阅读全文
posted @ 2023-03-13 09:34 乔55 阅读(46) 评论(0) 推荐(0)
摘要:
拷贝构造函数 // 基本概念 1. // 系统提供的默认拷贝构造函数,会逐个拷贝成员变量值,但只会进行简单的属性拷贝 2. // 怎样区分到底是拷贝构造函数还是重载等号操作符 1. 区分该操作到底是初始化对象,还是给已经存在的类对象赋值 1. Time t1 = t2; // 用t2初始化t1对象, 阅读全文
posted @ 2023-03-13 09:33 乔55 阅读(52) 评论(0) 推荐(0)
摘要:
## 静态成员变量概念 - 属于整个类所有,不需要依赖任何对象,在类外全局数据区单独开辟空间 - 在类内声明,在类外使用 ## 访问静态成员变量的方式 - 通过类名直接访问public属性的静态成员变量 - 能过对象直接访问public属性的静态成员变量 - 通过类的静态成员函数直接访问本类的成员变 阅读全文
posted @ 2023-03-13 09:31 乔55 阅读(60) 评论(0) 推荐(0)
摘要:
## 类的基本概念 ```cpp // 类的基本概念 - 类的定义:类用于抽象地描述一类事物所特有的属性和行为 - 类的在在特性:封装、继承、多态 - 封装:是面向过程的最基本特性,把数据和函数合成一个整体,用类与对象实现 - 非空对象的大小:按实际成员变量的大小来分配空间,不包括成员函数。 - 空 阅读全文
posted @ 2023-03-13 09:30 乔55 阅读(138) 评论(0) 推荐(0)
摘要:
memset void *memset(void *s, int c, size_t n); 功能:把s指向的n个内存单元设置成对应的c值 阅读全文
posted @ 2023-03-13 09:29 乔55 阅读(20) 评论(0) 推荐(0)
摘要:
为什么要对齐 32位架构的cpu,4个字节为一个读周期,设4字节变量在内存首地址为addr addr出现在4的整数倍地址处,方便一个读周期读取 若跨越2个周期拼凑一个4字节,效率低 对齐值 自身对齐值 整数类型自身的对齐值:内置类型自己的尺寸 结构体自身对齐值:数据成员最大的那个自身对齐值 指定对齐 阅读全文
posted @ 2023-03-13 09:29 乔55 阅读(119) 评论(0) 推荐(0)
摘要:
memccpy void *memccpy(void *dest, const void *src, int c, size_t n); 阅读全文
posted @ 2023-03-13 09:28 乔55 阅读(40) 评论(0) 推荐(0)
摘要:
memchr void *memchr(const void *s, int c, size_t n); 阅读全文
posted @ 2023-03-13 09:28 乔55 阅读(12) 评论(0) 推荐(0)
摘要:
strrev char* strrev(char* str); 功能:逆序str 阅读全文
posted @ 2023-03-13 09:27 乔55 阅读(31) 评论(0) 推荐(0)
摘要:
memcpy void *memcpy(void *dest, const void *src, size_t n); 功能:把src指向的n个字节复制至dest指向的内存空间中 阅读全文
posted @ 2023-03-13 09:27 乔55 阅读(14) 评论(0) 推荐(0)
摘要:
strstr char *strstr(const char *haystack, const char *needle); 返回值:子串在母串中第一次出现的地址位置,找不到返回NULL 阅读全文
posted @ 2023-03-13 09:26 乔55 阅读(41) 评论(0) 推荐(0)
摘要:
strcat char *strcat(char *dest, const char *src); char *strncat(char *dest, const char *src, size_t n); 阅读全文
posted @ 2023-03-13 09:26 乔55 阅读(20) 评论(0) 推荐(0)
摘要:
strcmp int strcmp(const char *s1, const char *s2); 返回值:返回0或正负值 mystrcmp int mystrcmp(const char* str1, const char* str2) { if (str1==NULL||str2==NULL) 阅读全文
posted @ 2023-03-13 09:25 乔55 阅读(83) 评论(0) 推荐(0)
摘要:
strcpy char *strcpy(char *dest, const char *src); char *strncpy(char *dest, const char *src, size_t n); 功能:拷贝字符串 返回值:dest地址,失败返回NULL 特点:无法检测dest是否可以容纳 阅读全文
posted @ 2023-03-13 09:24 乔55 阅读(82) 评论(0) 推荐(0)
摘要:
常见的ctype.h系统字符函数 1. islanum:字母或数字 2. isalpha:字母 3. isdigit:数字 4. isblank:标准的空白符 5. iscntrl:控制字符 6. isgraph:除空格之外任意可打印字符 7. islower:小写字母 8. isprint:可打印 阅读全文
posted @ 2023-03-13 09:23 乔55 阅读(72) 评论(0) 推荐(0)
摘要:
strlen ize_t strlen(const char* str); 功能:计算字符串的有效长度,不计算\0 运算符sizeof:计算时包含\0 自定义:mystrlen 阅读全文
posted @ 2023-03-13 09:23 乔55 阅读(21) 评论(0) 推荐(0)
摘要:
字符串常量 // 字符串常量"i love"存放于内存中的0x00667b30地址 // 将字面串常量拷贝到str1,str2内存中,末尾添加'\0' char str1[] = "i love"; // str1 = 0x00baf890 "i love" char str2[] = "i lov 阅读全文
posted @ 2023-03-13 09:17 乔55 阅读(79) 评论(0) 推荐(0)
摘要:
字符串定义 char* str1 = (char[]){ "i love" }; // 栈上内存str1,可修改内容 char* p[5] = { "abc","efg"}; // &p[i]是字符串常量地址,不可修改内容 char str2[][10] = { "abc","efg" }; // 阅读全文
posted @ 2023-03-13 09:12 乔55 阅读(89) 评论(0) 推荐(0)
摘要:
内联函数与宏替换 由预处理器处理,进行简单的文本替换,没有斜休编译过程 宏函数不可以访问类的成员 由于发生在预处理阶段,缺失了语法检测 阅读全文
posted @ 2023-03-13 09:10 乔55 阅读(26) 评论(0) 推荐(0)
摘要:
内联函数的实现机制 将内联函数存入符号表,当需要使用时,直接替换即可 符号表是C++编译器自己要用的东本,故不会出现在最终的代码文件中 阅读全文
posted @ 2023-03-13 09:08 乔55 阅读(17) 评论(0) 推荐(0)
摘要:
内联函数特点 内联函数没有普通函数调用时的额外开销:压栈、跳转、返回 内联函数仍由编译器处理,可检查参数、范围、返回值等,更安全 当函数执行体开销远远大于普通函数的调用开销时,内联毫无意义 内联函数直接将编译后的函数体插入调用该函数的位置 内联函数可以访问类的成员函数 编译器默认把类的成员函数做成内 阅读全文
posted @ 2023-03-13 09:06 乔55 阅读(58) 评论(0) 推荐(0)
摘要:
默认参数详解 // 基本规则 1. 默认参数的设置,要求必须从右到左开始设置 2. 默认参数必须连续,不能在2个默认参数之间存在非默认参数 阅读全文
posted @ 2023-03-13 06:05 乔55 阅读(23) 评论(0) 推荐(0)
摘要:
内联函数详解 // 内联函数特点 1. C++编译器会将一个函数进行内联编译,该函数叫内联函数 2. 内联函数在最终生成的代码中是没有定义的 3. 内联函数inline放在声明处不会成员,只有放在定义处才会成功 4. 不能将内联函数的声明与实现分别放在.h和.cpp文件中 5. C++编译器会推荐使 阅读全文
posted @ 2023-03-13 06:05 乔55 阅读(98) 评论(0) 推荐(0)
摘要:
宏定义 #define N 10 宏:就是简的文件替换 宏函数 #define fun(x) (1+(x)+(x)*(x)) #define fun() do { printf("hello "); printf("world\n"); } while(0) // 宏函数有时不仅仅是一个表达式,还可 阅读全文
posted @ 2023-03-13 06:04 乔55 阅读(16) 评论(0) 推荐(0)
摘要:
函数重载基本概念 // 什么叫函数重载 1. 同一作用域下,函数名相同,返回值类型相同,参数列表不同 2. 参数列表不同:参数的类型、个数、顺序不同。 void show(int a, long b) // 参数顺序不同的例子 { cout << "1" << endl; } void show(l 阅读全文
posted @ 2023-03-13 06:04 乔55 阅读(60) 评论(0) 推荐(0)
摘要:
程序运行发生的大致错误 编译错误 链接错误 没有包含相应头文件 函数名写错 运行错误 main函数 程序的入口 return 0:返回的是状态码,返回给调用者。0表示正常退出,非0表示异常退出 VS调试 逐过程调试:不进入函数内部 爱语句调试:每个语句均执行,包括进入函数内部 阅读全文
posted @ 2023-03-13 06:03 乔55 阅读(46) 评论(0) 推荐(0)
摘要:
## 函数的基本概念 ```cpp // 函数的返回值 - 不能返回局部变量地址值 - 可以返回指向数组或函数的指针,但不能返回数组类型或指针类型 - auto func(int x)->int(*)[10];函数的定义都可用尾置类型返回指向数组的指针 // 函数的退出 - return - 退出当 阅读全文
posted @ 2023-03-13 06:02 乔55 阅读(74) 评论(0) 推荐(0)
摘要:
## 临时对象基本概念 ```cpp // 临时对象 - 临时对象是在代码中真实存在,但却看不着的 // 产生临时对象的情景 - 类型转换生成临时对象 ``` 阅读全文
posted @ 2023-03-13 06:02 乔55 阅读(19) 评论(0) 推荐(0)
摘要:
fputs int fputs(const char *s, FILE *stream); 功能:将字符串str输出到指定文件中 返回值: 特点: 不会输出一个\n 当stream为stdout时,相当于puts 阅读全文
posted @ 2023-03-13 06:01 乔55 阅读(36) 评论(0) 推荐(0)
摘要:
基本概念 // 数组与指针 - 使用数组时,编译器一般会把它转换为指针 - 很多使用到数组名的地方,编译器会自动将数组名替换为一个指向数组首元素的指针 // 数组的下标类型 - 通常定义的数组为size_t类型,被定义在stddef.h或cstddf中 - size_t是一种与机器无关的无符号类型, 阅读全文
posted @ 2023-03-13 06:01 乔55 阅读(150) 评论(0) 推荐(0)
摘要:
fputc int fputc(int c, FILE *stream); 阅读全文
posted @ 2023-03-13 06:00 乔55 阅读(31) 评论(0) 推荐(0)
摘要:
puts int puts(const char *s); 功能:将字符串str输出到stdout中 返回值:成功返回非负值,失败返回EOF 特点:自动输出一个\n 阅读全文
posted @ 2023-03-13 06:00 乔55 阅读(98) 评论(0) 推荐(0)
摘要:
putchar int putchar(int c); 功能:输出一个字符,换行符\n可同样输出 返回值:返回输出的字符,发生错误时返回EOF putc int putc(int c, FILE *stream); 功能:把字符ch写到stream指定的文件中去,当stream为stdout时,相当 阅读全文
posted @ 2023-03-13 06:00 乔55 阅读(57) 评论(0) 推荐(0)
摘要:
fread,fwrite // fread,fwrite详解 // fread, fwrite - binary stream input/output // 二进制流输入输出函数,在linux下不区分二进制流、文本流 size_t fread(void *ptr, size_t size, siz 阅读全文
posted @ 2023-03-13 06:00 乔55 阅读(35) 评论(0) 推荐(0)
摘要:
getline ssize_t getline(char **lineptr, size_t *n, FILE *stream); 功能:从给定的输入流读取内容,直到遇到换行符停止读操作,并返回结果 返回值: 特点: 可输入空白符(空格、制表符),但不包括换行符 触发getline结束的那个换行符实 阅读全文
posted @ 2023-03-13 05:59 乔55 阅读(18) 评论(0) 推荐(0)
摘要:
gets // gets详解 char* gets(char* str); // reads a line from stdin into the buffer pointed to by s // until,either a terminating newline or EOF // which 阅读全文
posted @ 2023-03-13 05:59 乔55 阅读(53) 评论(0) 推荐(0)
摘要:
printf // printf详解 int printf("const char* format,..."); // 输出格式 %m.pX - m与p,用来控制输出格式 - X,是一个字母,表示以某种方式解释内存空间最 - m:含义是最小字段宽度,即用来控制待显示数值的最少字符个数 - 若数值的实 阅读全文
posted @ 2023-03-13 05:59 乔55 阅读(68) 评论(0) 推荐(0)
摘要:
getchar // getchar详解 int getchar(void); // getchar() return the character read as an unsigned char cast to an int // or EOF on end of file or error // 阅读全文
posted @ 2023-03-13 05:58 乔55 阅读(194) 评论(0) 推荐(0)
摘要:
scanf int scanf(const char* format,...); // scanf详解 - scanf本质上是一个模式匹配函数,试图将输入的字符与控制格式匹配 - 处理过程:从左到右依次处理转换说明 - 若处理成功,继续处理后续转换说明 - 若处理失败,则返回当前已经正确处理的转换说 阅读全文
posted @ 2023-03-13 05:58 乔55 阅读(53) 评论(0) 推荐(0)
摘要:
文件的回车与换行 回车:将光标跳到行首,对应ASCII值是13 换行:将光标跳到下一行,对应ASCII值是10 windows系统的换行其实是:回车+换行, 阅读全文
posted @ 2023-03-13 05:57 乔55 阅读(274) 评论(0) 推荐(0)
摘要:
标准输入输出对象 cin为istream类型的对象,称为标准输入对象 cout为ostream类型的对象,称为标准输出对象 cerr通常用来输出警告和错误信息,称为标准错误 clog用来输出程序运行时的一般信息 C++输入输出 C++并未定义任何的输入输出语句,它用一个标准库来提供io机制 istr 阅读全文
posted @ 2023-03-13 05:57 乔55 阅读(106) 评论(0) 推荐(0)
摘要:
文件的关闭 释放该文件占用的内存资源 防止往文件中写内容时写入不全 文件写入时并不瞬时写入文件,而是先写入相应的缓冲区,缓冲区未满不会自动更新到文件中 当及时关闭时,就会将写 入缓冲区的文件内容更新到文件中 fopen FILE *fopen(const char *path, const char 阅读全文
posted @ 2023-03-13 05:56 乔55 阅读(43) 评论(0) 推荐(0)
摘要:
文件的分类 根据数据组织形式,文件分为2种 ASICC文件,即文本文件:每个字节存储一个ASCII码 二进制文件,把内存中数据按照其在内存中的存储形式原样输出到磁盘上存储 文件流 文本流:流动着的字符序列 二进制流:流动着的二进制序列 标准输入流:stdin,针对标准输入键盘 标准输出流:stdou 阅读全文
posted @ 2023-03-13 05:56 乔55 阅读(179) 评论(0) 推荐(0) |
||