C++

1字符串函数

1字符串复制
strcpy(str1,str2);
2字符串部分复制
strncpy(str1,str2,n);
3字符串拼接
strcat(str1,str2);
4字符串部分拼接
strncat(str1,str2,n);
5字符串比较
strcmp(str1,str2);//1大于2,返回1;1等于2,返回0;1小于2,返回-1(比较字符ASCII码)
6求字符串长度
strlen(str);//返回字符串实际长度,不包含‘\0’

2结构体类型

结构体变量可以整体初始化,但不能整体赋值

3枚举类型

enum 枚举类型名{
标识符[=整型常数],
标识符[=整型常数],
...
};枚举类型名=标识符;

为某个成员赋值后,后续成员依次递增(默认为0,1,...)

4指针和链表

1指针必须初始化(指向变量)才能使用
2常指针不能赋值
3二级指针:地址的地址
4指针与二维数组
a[m][n]=*(a[m]+n)=*(*(a+m)+n)
5指针数组和指向数组的指针
int *p[n];//指针数组
int (*p)[n];//指向二维数组的指针
6指向函数的指针
int fun(<参数表>);
int (*p)(<参数表>);//返回值类型、参数表必须完全相同!
p=fun;
(*p)();//用指针调用函数
7const指针
const int *//不能通过指针改变变量的值
int * const//不能指向其他地址
const int * const //前两种结合
8void指针

任何类型的指针都可以直接赋值给void*
不能对void指针进行算术操作

9内存动态分配和撤销
new:
p=new int;
p=new int(n);
p=new int[];//动态数组

在申请的空间释放前,该指针不能指向其他地址
当没有足够的堆空间时,返回空指针

delete:
delete p;
delete []p;
delete [n]p;

5链表

随缘

6类和对象

1成员类型

public:允许类外调用
private:限定在该类的内部调用
protected:该类和类的派生类内调用

2存储空间分配

成员数据单独分配空间
成员函数存放在内存的公用区域中

3面向对象的程序设计的特点:封装性、继承与派生性、多态性
4构造函数

调用
(1)定义类的对象时
(2)调用new或new[]运算符动态创建对象时
对象内存分配与构造函数无关
默认构造函数:没有参数或参数都有默认值的构造函数
定义静态对象只调用一次构造函数
赋值语句涉及的临时变量的构造和析构

构造函数可以实现类型转换
Point p1(5,10);
p1=(50,100);//实现了强制类型转换
5析构函数

一个类中只能定义一个析构函数
析构函数在对象释放时自动调用
先构造的后析构
局部先于静态/全局析构

6复制构造函数

只有一个参数,必须是对某个对象的引用
对象作为实参做值传递时调用复制构造函数
每个类必须有一个复制构造函数

字符指针的深拷贝
class A{char *p};
A::A(const A &a){
    if(a.p){
        p=new char[strlen(a.p)+1];
        strcpy(p,a.p);
}
else p=0;
}
7对象成员

先调用对象成员类的构造函数,再调用该类的构造函数
对象成员调用顺序取决于定义的顺序

8友元函数和友元类

友元函数的主要作用是在类外访问类的所有成员数据

友元类:友元关系不能被继承,且是单向的
class B;//预引用
class A{
public:
    friend B;//有预引用,不加class
};
class B{
};

class A{
public:
    friend class B;//无预引用
};
class B{
};
9静态成员

静态数据成员:类外初始化,不加static,是类的成员
静态函数成员可以直接引用静态成员,不能直接引用非静态成员,需要通过对象来引用(对象名.成员)

10常对象

常对象只能调用常成员函数和静态成员函数
常数据成员只能在构造函数中通过初始化列表的方式完成初始化,
常函数成员的定义,const在形参表后出现,修饰this指针

11this指针

隐含的指针,指向对象本身,代表对象的地址
成员函数中含有this指针而友元函数中不含
将const写在函数头部和函数体之间修饰this指针
类的非静态函数成员都有this指针

7继承与派生

1派生类

包含基类的除构造析构函数外全部成员

2基类成员访问控制

基类的私有成员在派生类中需要通过公有成员函数访问

3派生类的构造与析构函数

先调用基类的构造函数,多重继承时,根据继承先后顺序调用;再调用对象成员的构造函数;最后调用派生类的构造函数

4冲突

作用域运算符区分基类成员(只能使用一次)
限定基类中访问权限为私有成员

5支配规则
6赋值兼容规则

基类兼容派生类,派生类不兼容基类

7虚基类
class A;
class B:virtual public A;
class C:public virtual A;
class D:public B,public C;

D中只保留一份共同基类的成员
在每一个派生类构造函数成员初始化列表中必须给出对虚基类构造函数的调用,但只在最终派生类中直接调用一次构造函数

8多态:静态绑定通过函数重载和运算符重载实现,动态绑定通过继承关系和虚函数实现

1虚函数
virtual void fun1(){};

构造函数调用类中的虚函数时,只调用该类中定义的虚函数,如没有则调用基类中的虚函数;成员函数中则根据虚函数特性(根据对象调用对应类的虚函数)
静态成员函数不能声明为虚函数

2纯虚函数和抽象类

含有纯虚函数的基类不能定义对象,只能作为基类派生子类,因此是一个抽象类

3运算符重载

至少有一个操作数是类的对象
不能重载的运算符1. 2:: 3?: 4sizeof 5.*/->
运算符重载不改变运算符的优先级和结合性,不能改变操作数的个数
除new和delete之外,不可重载为静态成员函数
赋值运算符必须通过成员函数重载,插入、提取运算符必须通过友元函数重载

4类型转换函数
operator <数据类型>(){};

不允许带参数,不可以指定返回值类型,返回值类型即为数据类型

9输入输出流类库

1重载提取运算符
friend istream & operator >> (istream &,<类名> &)
istream & operator >> (istream &is,<类名> &){
    is>>...;
    return is;
}
2重载插入运算符
friend ostream & operator << (ostream &,<类名> &)
ostream & operator << (ostream &os,<类名> &){
    return os<<...;
}
3文件打开、读写、关闭
ofstream of("filename");
of<<...;
of.close();

ifstream if("filename");
if>>...;
if.close();
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,128评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,316评论 3 388
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,737评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,283评论 1 287
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,384评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,458评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,467评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,251评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,688评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,980评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,155评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,818评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,492评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,142评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,382评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,020评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,044评论 2 352

推荐阅读更多精彩内容

  • 前言 把《C++ Primer》[https://book.douban.com/subject/25708312...
    尤汐Yogy阅读 9,514评论 1 51
  • 指针是C语言中广泛使用的一种数据类型。 运用指针编程是C语言最主要的风格之一。利用指针变量可以表示各种数据结构; ...
    朱森阅读 3,432评论 3 44
  • 在日常生活中,很多人会被“不”这个字难住,不会推辞别人的邀请;不知道该怎么拒绝别人。 那么为什么我们觉得“不”那么...
    未__央阅读 220评论 1 2
  • 中午回家的路上,带悠悠给弟弟买了两件小衣服,满架子的婴儿服装,悠悠认真的给弟弟挑选 悠悠问:姥姥会做小鞋子吗?...
    乐悠悠爱悠悠乐阅读 250评论 0 0
  • 如果时间 可以逆流而上 那么 或许我可以 选择不认识你 如果 世界再无光明 或许我可以 选择看不见你 如果 淡忘是...
    千眦狐君阅读 192评论 0 0