博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
上一页 1 ··· 8 9 10 11 12 13 14 下一页

2023年3月13日

摘要: ## 类的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 阅读(7) 评论(0) 推荐(0) 编辑

摘要: ## 基本概念 ```cpp // 常函数 - void getK(Time* const this)const{} - const在函数后边的含义是,该成员函数不能修改类成员变量 - 既然是针对于成员函数,那么普通构造函数就不能在其后边加const - 只有成员函数才能声明为const函数,普通函 阅读全文

posted @ 2023-03-13 09:38 乔55 阅读(11) 评论(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 阅读(14) 评论(0) 推荐(0) 编辑

摘要: ## 运算符重载概念 ```cpp 1. // 运算符重载是C++强大的特性之一,运算符重载有以下几种限制 // 不可臆造新的运算符 // 不能改变运算符原有的优先级、结合性和语法结构,不能改变操作数个数 // 运算符重载不家使用过多 // 运算符重载含义必须清楚,不能有二义性 // 必须遵循函数重 阅读全文

posted @ 2023-03-13 09:36 乔55 阅读(50) 评论(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 阅读(12) 评论(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 阅读(29) 评论(0) 推荐(0) 编辑

摘要: ## RTTI基本概念 - RTTI:run time type identification,也叫运行时类型识别 - 通过RTTI,程序能够使用基类的指针或者引用来检查这些指针或引用所指对象的实际类型 - RTTI,可看成是系统提供给我们的一种功能,此种功能可以通过2个运算符来体现 - dynam 阅读全文

posted @ 2023-03-13 09:35 乔55 阅读(11) 评论(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 阅读(20) 评论(0) 推荐(0) 编辑

摘要: 拷贝构造函数 // 基本概念 1. // 系统提供的默认拷贝构造函数,会逐个拷贝成员变量值,但只会进行简单的属性拷贝 2. // 怎样区分到底是拷贝构造函数还是重载等号操作符 1. 区分该操作到底是初始化对象,还是给已经存在的类对象赋值 1. Time t1 = t2; // 用t2初始化t1对象, 阅读全文

posted @ 2023-03-13 09:33 乔55 阅读(15) 评论(0) 推荐(0) 编辑

摘要: ## 静态成员变量概念 - 属于整个类所有,不需要依赖任何对象,在类外全局数据区单独开辟空间 - 在类内声明,在类外使用 ## 访问静态成员变量的方式 - 通过类名直接访问public属性的静态成员变量 - 能过对象直接访问public属性的静态成员变量 - 通过类的静态成员函数直接访问本类的成员变 阅读全文

posted @ 2023-03-13 09:31 乔55 阅读(15) 评论(0) 推荐(0) 编辑

摘要: ## 类的基本概念 ```cpp // 类的基本概念 - 类的定义:类用于抽象地描述一类事物所特有的属性和行为 - 类的在在特性:封装、继承、多态 - 封装:是面向过程的最基本特性,把数据和函数合成一个整体,用类与对象实现 - 非空对象的大小:按实际成员变量的大小来分配空间,不包括成员函数。 - 空 阅读全文

posted @ 2023-03-13 09:30 乔55 阅读(68) 评论(0) 推荐(0) 编辑

摘要: memset void *memset(void *s, int c, size_t n); 功能:把s指向的n个内存单元设置成对应的c值 阅读全文

posted @ 2023-03-13 09:29 乔55 阅读(6) 评论(0) 推荐(0) 编辑

摘要: 为什么要对齐 32位架构的cpu,4个字节为一个读周期,设4字节变量在内存首地址为addr addr出现在4的整数倍地址处,方便一个读周期读取 若跨越2个周期拼凑一个4字节,效率低 对齐值 自身对齐值 整数类型自身的对齐值:内置类型自己的尺寸 结构体自身对齐值:数据成员最大的那个自身对齐值 指定对齐 阅读全文

posted @ 2023-03-13 09:29 乔55 阅读(93) 评论(0) 推荐(0) 编辑

摘要: memchr void *memchr(const void *s, int c, size_t n); 阅读全文

posted @ 2023-03-13 09:28 乔55 阅读(5) 评论(0) 推荐(0) 编辑

摘要: memccpy void *memccpy(void *dest, const void *src, int c, size_t n); 阅读全文

posted @ 2023-03-13 09:28 乔55 阅读(18) 评论(0) 推荐(0) 编辑

摘要: memcpy void *memcpy(void *dest, const void *src, size_t n); 功能:把src指向的n个字节复制至dest指向的内存空间中 阅读全文

posted @ 2023-03-13 09:27 乔55 阅读(7) 评论(0) 推荐(0) 编辑

摘要: strrev char* strrev(char* str); 功能:逆序str 阅读全文

posted @ 2023-03-13 09:27 乔55 阅读(10) 评论(0) 推荐(0) 编辑

摘要: strstr char *strstr(const char *haystack, const char *needle); 返回值:子串在母串中第一次出现的地址位置,找不到返回NULL 阅读全文

posted @ 2023-03-13 09:26 乔55 阅读(25) 评论(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 阅读(9) 评论(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 阅读(29) 评论(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 阅读(57) 评论(0) 推荐(0) 编辑

摘要: strlen ize_t strlen(const char* str); 功能:计算字符串的有效长度,不计算\0 运算符sizeof:计算时包含\0 自定义:mystrlen 阅读全文

posted @ 2023-03-13 09:23 乔55 阅读(6) 评论(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 阅读(37) 评论(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 阅读(48) 评论(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 阅读(77) 评论(0) 推荐(0) 编辑

摘要: 内联函数与宏替换 由预处理器处理,进行简单的文本替换,没有斜休编译过程 宏函数不可以访问类的成员 由于发生在预处理阶段,缺失了语法检测 阅读全文

posted @ 2023-03-13 09:10 乔55 阅读(8) 评论(0) 推荐(0) 编辑

摘要: 内联函数的实现机制 将内联函数存入符号表,当需要使用时,直接替换即可 符号表是C++编译器自己要用的东本,故不会出现在最终的代码文件中 阅读全文

posted @ 2023-03-13 09:08 乔55 阅读(4) 评论(0) 推荐(0) 编辑

摘要: 内联函数特点 内联函数没有普通函数调用时的额外开销:压栈、跳转、返回 内联函数仍由编译器处理,可检查参数、范围、返回值等,更安全 当函数执行体开销远远大于普通函数的调用开销时,内联毫无意义 内联函数直接将编译后的函数体插入调用该函数的位置 内联函数可以访问类的成员函数 编译器默认把类的成员函数做成内 阅读全文

posted @ 2023-03-13 09:06 乔55 阅读(30) 评论(0) 推荐(0) 编辑

摘要: 默认参数详解 // 基本规则 1. 默认参数的设置,要求必须从右到左开始设置 2. 默认参数必须连续,不能在2个默认参数之间存在非默认参数 阅读全文

posted @ 2023-03-13 06:05 乔55 阅读(7) 评论(0) 推荐(0) 编辑

摘要: 内联函数详解 // 内联函数特点 1. C++编译器会将一个函数进行内联编译,该函数叫内联函数 2. 内联函数在最终生成的代码中是没有定义的 3. 内联函数inline放在声明处不会成员,只有放在定义处才会成功 4. 不能将内联函数的声明与实现分别放在.h和.cpp文件中 5. C++编译器会推荐使 阅读全文

posted @ 2023-03-13 06:05 乔55 阅读(64) 评论(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 阅读(4) 评论(0) 推荐(0) 编辑

摘要: 函数重载基本概念 // 什么叫函数重载 1. 同一作用域下,函数名相同,返回值类型相同,参数列表不同 2. 参数列表不同:参数的类型、个数、顺序不同。 void show(int a, long b) // 参数顺序不同的例子 { cout << "1" << endl; } void show(l 阅读全文

posted @ 2023-03-13 06:04 乔55 阅读(19) 评论(0) 推荐(0) 编辑

摘要: 程序运行发生的大致错误 编译错误 链接错误 没有包含相应头文件 函数名写错 运行错误 main函数 程序的入口 return 0:返回的是状态码,返回给调用者。0表示正常退出,非0表示异常退出 VS调试 逐过程调试:不进入函数内部 爱语句调试:每个语句均执行,包括进入函数内部 阅读全文

posted @ 2023-03-13 06:03 乔55 阅读(15) 评论(0) 推荐(0) 编辑

摘要: ## 临时对象基本概念 ```cpp // 临时对象 - 临时对象是在代码中真实存在,但却看不着的 // 产生临时对象的情景 - 类型转换生成临时对象 ``` 阅读全文

posted @ 2023-03-13 06:02 乔55 阅读(8) 评论(0) 推荐(0) 编辑

摘要: ## 函数的基本概念 ```cpp // 函数的返回值 - 不能返回局部变量地址值 - 可以返回指向数组或函数的指针,但不能返回数组类型或指针类型 - auto func(int x)->int(*)[10];函数的定义都可用尾置类型返回指向数组的指针 // 函数的退出 - return - 退出当 阅读全文

posted @ 2023-03-13 06:02 乔55 阅读(42) 评论(0) 推荐(0) 编辑

摘要: 基本概念 // 数组与指针 - 使用数组时,编译器一般会把它转换为指针 - 很多使用到数组名的地方,编译器会自动将数组名替换为一个指向数组首元素的指针 // 数组的下标类型 - 通常定义的数组为size_t类型,被定义在stddef.h或cstddf中 - size_t是一种与机器无关的无符号类型, 阅读全文

posted @ 2023-03-13 06:01 乔55 阅读(103) 评论(0) 推荐(0) 编辑

摘要: fputs int fputs(const char *s, FILE *stream); 功能:将字符串str输出到指定文件中 返回值: 特点: 不会输出一个\n 当stream为stdout时,相当于puts 阅读全文

posted @ 2023-03-13 06:01 乔55 阅读(14) 评论(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 阅读(10) 评论(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 阅读(36) 评论(0) 推荐(0) 编辑

摘要: puts int puts(const char *s); 功能:将字符串str输出到stdout中 返回值:成功返回非负值,失败返回EOF 特点:自动输出一个\n 阅读全文

posted @ 2023-03-13 06:00 乔55 阅读(58) 评论(0) 推荐(0) 编辑

上一页 1 ··· 8 9 10 11 12 13 14 下一页