
C/C++
文章平均质量分 87
Better_JH
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
C++中的多态
多态(polymorphism)一.多态性:即多种形式或形态的情形。在面向对象方法中,向不同的对象发送同一消息,不同的对象在接收时会产生不同的行为。也就是说,不同的对象用自己的方式去响应共同的消息。二.多态的类型。静态多态又称为静态链编或早绑定,编译器在编译阶段完成的,编译器根据函数实参的类型(可能会进行隐式类型转换),可推析出要调用哪个函数,如果有对应的函数就调用该函数,否则原创 2016-11-15 15:28:31 · 432 阅读 · 0 评论 -
可变参数列表求一组数的最大值
//使用可变参数列表求一组数2, 6, 8, 4, 3的最大值#include<iostream>#include<stdlib.h>#include<stdarg.h>using namespace std;int Max(int num, ...){ int max = -0x7FFFFFFF;//32系统中最小的整数 va_list p_arg;//定义一个可变参数原创 2017-08-04 22:54:15 · 1258 阅读 · 0 评论 -
字符串处理函数的模拟实现(strlen、strstr、strcat、strcmp、strcpy、memmove、memcpy)
1.strlen()函数的模拟实现(计数器法)#define _CRT_SECURE_NO_WARNINGS 1#include #include #include int my_strlen(const char *arr){int count=0;assert(arr!=NULL);while(*arr!='\0'){arr++;coun原创 2016-09-06 17:42:21 · 612 阅读 · 0 评论 -
可变参数列表求一组数的最大值
#define _CRT_SECURE_NO_WARNINGS 1#include #include #include int Max(int n,...){int i=0;int max=0;int val=0;va_list arg;va_start(arg,n);for(i=0;i{val=va_arg(arg,int);if(val>原创 2016-07-31 21:53:55 · 800 阅读 · 0 评论 -
字符串逆序(递归实现)
#define _CRT_SECURE_NO_WARNINGS 1#include #include #include char *reverse(char *str){char *left=str;char *right=str+strlen(str)-1;char tmp;if(*left!='\0'){tmp=*left;*left=*righ原创 2016-07-31 21:55:29 · 906 阅读 · 0 评论 -
小问题大脑洞
1.五位运动员参加了10米台跳水比赛,有人让他们预测比赛结果A选手说:B第一,我第三;B选手说:我第二,E第四;C选手说:我第一,D第二;D选手说:C最后,我第三;E选手说:我第四,A第一。比赛结束后,每位选手都说对了一半,请编程确定比赛的名次。#define _CRT_SECURE_NO_WARNINGS 1#include <stdio.h>#i...原创 2016-07-21 18:03:44 · 469 阅读 · 0 评论 -
结构体内存对齐原因及规则
结构体内存对齐原因:1、平台原因(移植原因): 不是所有的硬件平台都能访问任意地址上的任意数据的; 某些硬件平台只能在某些地址处取某些特定类型的数据,否则抛出硬件异常。2、性能原因: 数据结构(尤其是栈)应该尽可能地在自然边界上对齐。原因在于,为了访问未对齐的内存,处理器需要作两次内存访问;而对齐的内存访 问仅需要一次访原创 2016-09-06 17:37:33 · 695 阅读 · 0 评论 -
this指针
this指针:当我们在进入一个房子之后,可以看见房子里的桌子,椅子、地板等,但是看不到房子的全貌。对于一个类的实例来说,你可以看到它的成员函数、成员变量,但是实例本身呢?this是一个指针,它时时刻刻指向这个实例。1.this指针的特性①this指针的类型 类类型* const;②this指针并不是对象本身的一部分,不影响sizeof的结果;③this的原创 2016-10-12 12:36:33 · 436 阅读 · 0 评论 -
构造函数、拷贝构造函数和析构函数
构造函数 构造函数:是一个特殊的成员函数,名字与类名相同,创建类类型对象时由编译器自动调用,在对象的生命周期内只且只调用一次,以保证每个数据成员都有一个合适的初始值。构造函数的特性: 1、函数名与类名相同; 2、不具有任何类型,没有返回值; 3、有初始化列表(可以不用):每个数据成员在初始化列表中只能出现一次;初始化列表仅用于初始化数据成员,并不指定数据原创 2016-10-18 20:25:16 · 505 阅读 · 0 评论 -
C++中的继承
继承(inheritance):一.继承是面向对象程序设计使代码可以复用的重要手段,它允许程序员在保持原有类特性的基础上进行扩展,增加功能。这样产生新的类,称为派生类(子类),原有的类称为基类(父类)。二.继承定义格式:class 派生类类名 : 继承关系 基类类名 ﹛ 派生类新增加的成员 ﹜; 三.继承关系&访问限定符:原创 2016-11-07 18:53:17 · 526 阅读 · 0 评论 -
C/C++函数调用约定
1.VC 中默认调用是 __cdecl 方式,Windows API 使用 __stdcall 调用方式,在 DLL 导出函数中,为了跟 Windows API 保持一致,建议使用 __stdcall 方式。2.调用约定跟堆栈清除密切相关。如果写一个汇编函数,给 C/C++ 调用,在 __cdecl 方式下,则汇编函数无需清除堆栈,在 __stdcall 方式下,汇编函数需要在返回(RET)之原创 2016-09-16 21:13:31 · 409 阅读 · 0 评论 -
为什么构造函数不可以声明为虚函数,而析构函数最好声明为虚函数
为什么构造函数不可以被声明为虚函数:1、因为创建一个对象时要确定对象的类型,而虚函数是在运行时确定其类型的,而在构造一个对象时,由于对象还未创建成功,编译器无法知道对象的实际类型。2、虚函数对应一个虚表,可是指向虚表的指针是存储在对象的内存空间的。如果构造函数是虚的,就需要通过虚表来调用,可是对象还没有实例化,也就是内存空间还没有,怎么找虚表呢?所以构造函数不能是虚函数。为什么析构函数...原创 2016-11-11 23:04:42 · 2008 阅读 · 2 评论 -
模拟实现atoi、itoa
先来罗列一下所有被转换的字符串可能的形式:" +5623852365223" // 溢出,无效值,ret=0" +5623" // 正常,ret=5623"-5592" // 正常 ret=5592"+321" // 正常 ret=321"/5262-22" // 无效值 ret原创 2017-08-04 22:46:41 · 516 阅读 · 0 评论