C++笔记

effective c++
OPP:面向对象编程,设计并扩展自己的数据类型!!
为什么要使用头文件,c语言的要求#include <stdio.h> 表示把文件stdio.h中的所有内容拷贝到“这里”
成员变量,成员函数 都是出现在类定义之中的
sizeof 其作用是返回一个对象或类型所占的内存字节数,对于结构体、类而言,空的大小不为0,为1
数据结构:数组,字符串,链表,树,栈,队列
字符串可以看成是特殊数组,数组和字符串是两种最基本的数据结构,采用连续分配内存存储数字和字符;链表和树面试概率最高,操作时需要用到大量指针(要注意鲁棒性),栈是一个和递归紧密相关的数据结构,队列与广度优先遍历算法相关
数组的特点:寻址容易,添加删除困难
链表特点:寻址困难,添加删除容易
数组空间效率不高,因此设置了动态数组,例如vector
数组的名称就是一个指针!指向数组的第一个元素
c++字符串会多一个空间最后存放\0作为结束字符
int argc, char *argv[]
链表是一种动态数据结构!意思是创建时不需要知道链表的长度(这点不像数组—)链表是依靠指针进行操作的!
cout cin 很好用,实际上就是iostream类的实例化对象,输出形式是由变量类型引导的!
函数头,函数体
类 对象————int a ,成员变量,成员函数,public private
函数声明(也就是函数原型),函数调用,函数调用,参数传递(形参实参)
区分函数原型,函数头,函数定义
函数调用必须要加上(),例如x = rise()
sizeof()用来看所占字节数,short 2 int 4 long 4 char 1 float 4 double 8
short 节约内存 long 移植性好 int 最可靠(默认存储为int)
在数字后面加L,U,UL表示存储类型
’ ’ 字符 ” “ 字符串
cout.put()用来字符输出
成员操作符.
const int MONTH = 12;
浮点运算要比int慢
int/ int = int
数组:同类型变量,字符串;特殊的数组,struct:可以存储不同类型的数据
sizeof(list) sizeof(list[0])
字符串最后以\0结尾,sizeof(‘a’) != sizeof(“a”),strlen() sizeof()
str输出的是整个字符串, cout对于字符串就是这样处理的,输出字符串内容
而a输出的是a[0]的地址 cout对于非字符串,就会输出数组名所表示的地址值,
cin.getline(strname,length)用于行读取输入
cin.get() 可以用于按行读取,也可以进行一个字符读取,读取换行符
注意空行输入和输入字符过多

cin.get() 可以读取特殊字符
两种方法处理字符串:采用数组char str[ ],或者string类变量!!很好用 #include < string >
str.size()
getline(cin ,str)对于string类型读取一行的方法

struct enum union
enum 定义完成之后就可以用了
enum color {red, blue};//定义了color新类型,并且定义了red blue这样的符号常量可以直接用!!!
cout << red; ___________输入0
pointer
指针一定要指向一个确定的地址!!
动态分配内存:new delete成对使用
int * ps = new char[10];
delete [ ] ps;
extern 声明而非定义变量(不要显式赋值)
extern int a;
PS:显示定义就是int a = 10; 隐式定义就是 int a;
const 修饰变量成为定值 const int a = 19;const还可以声明指针
如果要是定义struct 指针类型,引用其中的量要用->符号!
struct box * box ; … box->length = 10;
*是指解除引用符号,指针指向内存
使用for来进行循环计数,对于不知道循环次数的采用while
注意:确定中止条件,初始化,判断之前要更新条件
函数重载语序创建多个同名函数,条件是参数列表必须要不相同
循环可以用来处理逐字符文本输入
如果处理输入来自与文件,那么可以采用检测EOF方法,输入可以采用ctrl+z模拟EOF,用cin.fail()检测EOF
注意:ch = cin.get() 和 cin.get(ch)都可以,但是后者形式是采用的cin格式,可以写成cin.get(ch1).get(ch2)
利用&&设置取值范围[10,20]
?:操作符 a? b:c a如果true那么执行b
switch (条件)
{ case…
case…
}
要习惯!!自定义类型,先定义,再实例化
struct enum union class
break continue两种跳出方法
break是结束循环,continue是开启下一次循环
要会用|| 如果左边条件一直满足就不会看右边的
同样,&&左边不满足就不会看右边的
cin.clear() 用来重置输入,如果出错不加这句话那么就拒绝读取之后的所有操作

用于处理文件输入输出,fstream 定义了ofstream类,要进行一个实例化
ofstream file;
file.open(“sss.txt")

对于类定义的时候,可以采用如下声明模板:
template < class DataType> //注意,这里的datatype实际上可以是任何字符,T 啥的都可以,就是代表一个未知的数据类型
class xxx
然后再class中对于变量类型不用具体声明是哪种,直接用datatype来进行书写即可

再C++定义类的过程中,一定要注意定义的类首字母要大写!然后对于类的构造函数不能前面带有类型符号!!!

对于头文件定义就记住固定句式:
#ifndef BOX_H
#define BOX_H

#endif
BOX_H就是对应的头文件的名称box.h

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值