第一期。
\r回到本行开头
\b退一格
\t制表符
'\0'表示数字0
if(条件位假)
用:0、NULL、'\0'、false.四种
整数运算得整数不会得小数。
<<;所有二进制依次向左移,左边的丢失,右边补0.
21<<3;右移21/21的3次方。
交换a,b的值公式
a=a^b;
b=a^b;
a=a^b;
|或运算起加法作用和
a=8;
b=2;
c=a|b// c等于10.
判断哦数
int a,b=1;
a|b相等是基数
a|b不想等是哦数
比较大小?:
int c,a,b;
c=a>b?a:b;// c是最大数比较a,b
static int c=0;静态局部变量只初始化一次不重新创建
extern 声明  声明全局变量或外部变量可
-i"文件名"相当于#include''文件名"
-I"文件目录" 相当于#include''文件目录''
输出字符变量地址的时候改成输出从这个内存单元
开始存放的一系列字符,到向后遇到第一个'\0'为止
hex表示要输出16进制
char a;
cout<<"&a="<<hex<<"0x"<<(int)&a<<endl;
输出a字符变量的地址
数组初始化时不够补零
只有指针可以保存地址
swap(a,b);// 交换两个变量的值包含<algorithm>。algorithm是算法的意思。
数组排序算法
int a[5]={2,3,4,5,7};
for(int i=0;i<5;i++)
for(int j=i+1;j<5;j++)
if(a[j]<a[i])swap(a[j],a[i]);
<cstring>下面4个函数包含的头文件
strcpy(字符数组名,字符串)//把一个字符串赋值到字符数组中
strlen(字符串);//字符串的长度
strcmp(字符串1,字符串2)返回int比较两个字符串:返回0表示相等
strcat(字符数组名,字符串)把字符串追加字符后头
cin>>字符变量地址或数组名;
把输入的一串字符 从这
个地址开始依次摆放最
后追加一个'\0'.
string处理字符串类型
string a;// 0~1G
int c=a.size();// c表示a容量有多大
a+=字符串;// 追加字符串
string处理字符串类型可以直接比大小a<b;
a.c_str();
extern a;声明变量没有extern是定义。
argument实参
cannot不能
convert 转换
pointer 指针
pointer to 指向
int (*a)[10];// 表示定义一个指向
有十个下标的数组指针。
date *p;// date是一个struct结构
(*p).year==p->year
那块空间的地址=new 类型;// 申请空间,在堆中申请一个变量的空间,返回这个变量的地址
delete 地址;// 释放空间
string str;
getline(cin,str)读一整行<string>
char a[200];
int * const p;// 长指针,定指针。指针指向一个固定的位置不能指向别处
int const *p;// 指向长量的指针,可以指向变量但不可以修改它指向的数据
const int * const p;// 长指针指向一个地方
常量定义的时候要初始化,不然后面不可以在赋值或修改
不管什么指针都占4个字节内存地址;
void *p;// 可以指向任何类型的指针
int a;
*(int *)p==a;// 指向其它类型时加说明.
int main(命令行中字符
串个数,一组字符指针一次指向字符串(空个分隔))
atof(浮点数字字符串);//转成对应的数字float或double<cstdlib>
atoi(整型字符串);//转成对应的数字int            <cstdlib>
列:12.34=atof("12.34");
1234=atoi("1234");
一个变量的类型和地址是终身不变的
int a;
int &b=a;// b是a的别名。
指针取名用p开头
引用取名用r开头
引用直接操作初始化的那个变量
1.尽量用引用来传递参数
2.尽量用const来限制引用的修改
全局变量和静态变量没有初始化默认值0;
函数也有地址,就是函数名;
函数指针:
象声明函数一样定义函数指针,
不同于,要把函数名改成(*指针名)
的形式。
void (*p)(int a)=NULL;// 定义函数指针p
void w(int a);//
p=q;
p(2);
函数指针没有加减运算,不允许输出函数的值
int a[5];
memset(a,0,sizeof(int)*5);
memset(空间首地址,填充字符,和结尾地址);// 用一个字符填充内存空间
<cstring>
那块空间的地址=new 类型(初始值);
long t=time(NULL);
while(time(NULL)==t);// 等一秒
<ctime>
<<flush;立即显示。
如:
cout<<123<<flush;
在调用成员函数时程序会
自己把结构变量的地址传
过来,可以通过this来使用这个地址
函数声明的时候参数可以不写变量,只写类型。
类型是类的变量就是对象。
全局对象(变量)的构造函数在main之前调用
构造函数
名: 类名
返回:不写
调用:自动在对象创建时
访问:public
构造函数不能是虚函数
析够函数
名:~类名
返回:不写
调用:自动在对象释放时
访问:public
类中只要有一个虚函数,那么析构函数应为虚函数
继承
1.单重继承
2.多重继承
3.虚继承
多态
1.虚函数
2.类型识别
3.纯虚函数,下包含抽象类
继承:定义一个新类自动获得一个已有的类的全部成员。是的关系。
组合是有的关系。
基类->旧类->父类。
派生类->新类->子类
计算绝对值公式
(a>0?a:-a)
公开继承
继承全部成员
class 新类名 :public 旧类名{...};
来自父类的私有成员不能直接访问。
protected和public 可以访问。
私有继承
class 新类名 :private 旧类名{...};
来自父类的私有成员不能直接访问。
protected和public 可以访问。
调用子类构造时先调用父类构造函数在执行自己的语句
子类析构函数调用后会调用父类的析构函数。
创建子类对象的时候默认调用无参的构造函数
如果想向父类构造函数传递参数时在子类的构造函数的初始化列表 父类名(初值)
对常量对象不能调用普通成员函数。除非在函数的参数表后加)const{。声明不修改对象的数据成员。
子类函数和父类函数同名时会
覆盖父类函数,要想调用父类隐藏的函数用
(有对象责加对象名.)父类名::函数名
多重继承
class A:public B,public C,public D{...};
class 新类:已有父类,已有父类,已有父类,{...};
虚继承
virtual关键字
虚继承时父类称为虚基类
来自同一个虚继承的成员会合并成一份
class A{};
class B:virtual public A{};//继承A
class C:virtual public A{};//继承A
class D:public B,public C{};//继承B和C把B和C里的A成员合并为一份。
string obj;
长度:obj.size()
赋值:obj="hello";直接
输入自动处理长度
getline(cin,obj);// 读行
连接:obj+=附加串;
比较:obj1  比较运算符  obj2 ;为true相等为false不相等
转成char型:obj.c_str();转换结果为const char*
char s[100];
长度:strlen(地址)
赋值:strcpy(地址,字符串)
必须考虑长度问题
读行:line(地址,长度)
连接:strcat(旧串,附加串)旧串要考虑长度附加后够不够
比较:strcmp(串1,串2)-+0为负时是小于为正为大相等为0
子类对象总可以看成父类对象
多态通过指针或引用访问某一个成员函数的时候,根据对象的真实类型执行相应类的函数。
在成员函数的类型前加关键字virtual如
virtual void A::show(){};有virtual的函数叫虚函数。如果有声明和定义则在声明前加virtual。
多态
0.父类必须有一个虚函数
1.继承关系
2.调用的是虚函数
3.用父类指针或引用调用识别子类的虚函数
纯虚函数
virtual void a()=0;表示这个函数不会被真正执行
有纯虚成员函数的类叫抽象类。不能创建对象只能用来指向或引用子类对象
类型转换
XXX_cast<;类型>(数据)
1.static_cast数据类型之间的转换,有类型指针与void*之间的转换 , 无名对象支持的转换
4.clynamic_cast转换子类的对象或地址成父类的对象或地址
volatle 不稳定变量
auto 自动
register 寄存器
register int n;// 把变量存在寄存器。
查看变量1在内存存放的情况
unsigned char *p=NULL;
int n=1;
p=reinterpret_cast<unsigned char*>(&n);
for(int i=0;i<4;i++)
cout<<(int)*p++<<' ';
typedef
给类型取别名
如:
typedef unsigned int U;//
static
静态局部变量
只创建一次不重新创建,表示局部变量延长生命期。
静态全局变量 和 静态函数
表示只在本文件使用。
静态数据成员
凡是所有对象共用一份的数据都要声明为静态数据成员。也称类变量。要在类外初始化。允许但不提倡用对象.成员访问静态成员。
静态成员函数
凡是所有对象共用的行为都要声明为静态函数。也称类方法。只能访问静态成员。public里调用: 类名::静态成员函数;
友员
授权给某个类或函
数可以访问这个类的私有成员,友员不是成员。
外面的函数访问另一个类叫友员函数。
一个类直接访问某个类中的私有成员。
友员函数
在授权的类内写friend后跟函数声明或定义,表示授权给这个函数。
友员类
在授权的类内写friend后跟class 需访问私有成员的类名;如:friend class b;
凡是向函数传递对象时尽量用引用。值不改变时一般加const 。
形参是一个新变量,在调用时创建,由实参来初始化。
创建对象要调构造,调构造要创建形参,形参又是一个新对象,创建新对象又要调用构造,调用构造又要创建对象,.....
引用就是初始化变量的别名
人的睡觉时间6个半小时到7小时为好
invalid 无效的
constructor构造函数
自动产生构造函数
1.A()
2.A(const A&) //默认拷贝构造函数,把旧对象的内容逐个字节拷贝到新对象如:
A oldobj;
A newobj(oldobj);
自己定义拷贝构造函数之后,就没有默认的拷贝构造函数了,要去自己定义的拷贝函数中处理所有需要处理的数据
可以允许: operator 运算符,做函数名。运算符重载就是自己写运算符函数,类规定运算如何工作。
规定后++后--时    当双目运算第二个参数为int型
在规定运算符重载时至少有一个操作数是自定义类型。
对自定义类型的对象,使用运算符是总是调用相应的运算符函数。
. .* :: ?:不能运算符重载c++strcpy函数用法
类型转换运算符重载
文件和控制台IO都是统一的。
I 输入 从控制台或从文件读取
O 输出 向控制台或从文件写,输出
输入过程从键盘->键盘缓冲区->回车->输入缓冲区->程序读取。
cerr和clog 输出不缓冲,不能重定向,用法跟cout完全相同。
创建对象一个文件
ofstream fout("a.txt")
fout.close();// 释放。
一个IO流对象在没有出错时可以当成真,在出错时可以当成假。
函数篇
#include<Windows.h>头文件
system("color 1A");  // 设置字体背景  color空格后跟一个数字(0-9)和一个字母(A-F)。
清屏: system("cls");// 不要头文件。
暂停:
Sleep(3000);// 暂停3秒。第一个S大写。要包含#include<Windows.h>。
退出程序:
exit(1);// 不需要包含头文件
发简单的声音:
Beep(1000,1000);// 要包含#include<Windows.h>
c=time(NULL);// 取得1977年至现在秒数#include<ctime>
a=rand()%100;// 0~32767的一个随机数。
#include<ctime>
#include<cstdlib>
srand(time(NULL);
a=rand()%b;// a等于一个0~b的随基数。
取位:
一个数a
取:                                          位
万亿      wy=a%10000000000000/1000000000000;  13
千亿      qy=%10000000000000/100000000000;  12
百亿      by=a%100000000000/10000000000;    11
十亿      sy=a%10000000000/1000000000;    10
亿位   
y=a%1000000000/100000000;      9
千万位    qw=a%100000000/10000000;      8
百万位    bw=a%10000000/1000000;        7
十万位    sw=a%1000000/100000;        6
万位      w=a%100000/10000;          5
千位      q=a%10000/1000;          4
百位      b=a%1000/100;            3
十位      s=a%100/10;            2
个位      g=a%10;                1
int  g,s,b,q,w,sw,bw,qw,y,sy,by,qy,wy;
字符型数字转换整型:
#include <stdlib.h>        //atoi的头文件
#include<iostream>
using namespace std;
int main()
{
char str[100]="12";
int a;
a=atoi(str);
cout<<a;      //输出12
return 0;
}
就可以了。
当然还有
atoi,就是转成long型,的头文件#include <stdlib.h>

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。