C++笔录

这篇博客详细记录了C++的一些核心概念,包括 endl 的使用、typedef、类型限定符、存储类、位运算符、goto 语句在退出深嵌套例程中的应用、参数默认值、setw 函数控制输出间隔、指针、引用、结构体、类的构造与析构函数、抽象类、文件和流操作、异常处理、命名空间、预处理器、多线程以及STL和标准库的使用。
摘要由CSDN通过智能技术生成
  • 1,endl,这将在每一行后插入一个换行符,<< 运算符用于向屏幕传多个值

  • 2,typedef 为一个已有的类型取一个新的名字

如:typedef int feet;feet distance;//这样写是可以的
  • 3,C++ 中的类型限定符
const 类型的对象在程序执行期间不能被修改改变。
修饰符 volatile 告诉编译器,变量的值可能以程序未明确指定的方式被改变。
由 restrict 修饰的指针是唯一一种访问它所指向的对象的方式。只有 C99 增加了新的类型限定符 restrict。
  • 4,存储类
auto 只能修饰局部变量
register 存储类用于定义存储在寄存器中而不是 RAM 中的局部变量。不能对它应用一元的 '&' 运算符(因为它没有内存位置)。
当 static 修饰全局变量时,会使变量的作用域限制在声明它的文件内。
在 C++ 中,当 static 用在类数据成员上时,会导致仅有一个该成员的副本被类的所有对象共享。
extern 存储类用于提供一个全局变量的引用,全局变量对所有的程序文件都是可见的
  • 5,位运算符
&:相同为1;
|:有1即是1;
^:不同为1;
~:取反
<<:左移,如,24左移3位,2423次方;24*2*2*2;
>>:右移,和左移相反;
  • 6,杂项运算符
sizeof:运算符返回变量的大小。例如,sizeof(a) 将返回 4,其中 a 是整数。
Condition ? X : Y :条件运算符。如果 Condition 为真 ? 则值为 X : 否则值为 Y。
.(点)和 ->(箭头):成员运算符用于引用类、结构和共用体的成员。
Cast:强制转换运算符把一种数据类型转换为另一种数据类型。例如,int(2.2000) 将返回 2。
&:指针运算符 & 返回变量的地址。例如 &a; 将给出变量的实际地址。
*:指针运算符 * 指向一个变量。例如,*var; 将指向变量 var。
  • 7,goto 语句允许把控制无条件转移到同一函数内的被标记的语句
    goto 语句一个很好的作用是退出深嵌套例程。

  • 8,参数的默认值

定义:int sum(int a, int b=20),调用sum(a, b);和 sum(a);
调用函数时,如果未传递参数的值,则会使用默认值,如果指定了值,则会忽略默认值,使用传递的值。
  • 9,C++中,setw(int n)用来控制输出间隔。

  • 10,指针

所有指针的值的实际数据类型,都是一个代表内存地址的长的十六进制数。
  • 11,引用
int i = 17;
int& r = i;//r 是一个初始化为 i 的整型引用。
引用很容易与指针混淆,它们之间有三个主要的不同:
    不存在空引用。引用必须连接到一块合法的内存。
    一旦引用被初始化为一个对象,就不能被指向到另一个对象。指针可以在任何时候指向到另一个对象。
    引用必须在创建时被初始化。指针可以在任何时间被初始化。
  • 12,struct 关键字来定义结构类型的变量
typedef 更简单的定义结构的方式,您可以为创建的类型取一个"别名";也可以定义非结构类型
结构最后注意跟上“;”
  • 13,类结束后面也要加上“;”
私有的成员和受保护的成员不能使用直接成员访问运算符 (.) 来直接访问。
  • 14,类的析构函数是类的一种特殊的成员函数,它会在每次删除所创建的对象时执行。
析构函数的名称与类的名称是完全相同的,只是在前面加了个波浪号(~)作为前缀,
它不会返回任何值,也不能带有任何参数。析构函数有助于在跳出程序(比如关闭文件、释放内存等)前释放资源。
  • 15,默认情况下,在类中定义的所有项目都是私有的

  • 16,如果类中至少有一个函数被声明为纯虚函数,则这个类就是抽象类

如:// 纯虚函数是通过在声明中使用 "= 0" 来指定的
    virtual double getVolume() = 0;
  • 17,文件和流
ofstream:用于创建文件并向文件写入信息。
ifstream:用于从文件读取信息
fstream:同时具有 ofstream 和 ifstream 两种功能

void open(const char *filename, ios::openmode mode);
open() 成员函数的第一参数指定要打开的文件的名称和位置,第二个参数定义文件被打开的模式。

模式:
ios::app->追加模式。所有写入都追加到文件末尾。
ios::ate->文件打开后定位到文件末尾。
ios::in->打开文件用于读取。
ios::out->打开文件用于写入。
ios::trunc->如果该文件已经存在,其内容将在打开文件之前被截断,即把文件长度设为 0。

如果想要打开一个文件用于读写:
fstream afile;
afile.open("file.dat", ios::out | ios::in );
  • 18,关闭文件void close();
C++ 程序终止时,它会自动关闭刷新所有流,释放所有分配的内存,并关闭所有打开的文件。

写入文件,使用流插入运算符( << )向文件写入信息
读取文件,使用流提取运算符( >> )从文件读取信息
getline()函数从外部读取一行,ignore() 函数会忽略掉之前读语句留下的多余字符。

istream 和 ostream 都提供了用于重新定位文件位置指针的成员函数
istream 的 seekg()
ostream 的 seekp()
  • 19,异常问题
what() 是异常类提供的一个公共方法,它已被所有子异常类重载。这将返回异常产生的原因。
  • 20,using 指令也可以用来指定命名空间中的特定项目
如果您只打算使用 std 命名空间中的 cout 部分:using std::cout;
  • 21,嵌套的命名空间:
在一个命名空间中定义另一个命名空间
通过使用 :: 运算符来访问嵌套的命名空间中的成员
  • 22,预处理器:
#define 预处理指令用于创建符号常量,如:#define PI 3.14159
  • 23,多线程
pthread_create();//函数创建线程
pthread_exit(NULL);//等各个线程退出后,进程才结束,否则进程强制结束了,线程可能还没反应过来;
pthread_attr_init(&attr);//初始化并设置线程为可连接的(joinable)
pthread_join();//子程序阻碍调用程序,直到指定的 threadid 线程终止为止
pthread_attr_destroy(&attr);//删除属性,并等待其他线程
  • 24,cookie 是一种纯文本的数据记录,带有 5 个可变长度的字段:
Expires : cookie 的过期日期。如果此字段留空,cookie 会在访客退出浏览器时过期。
Domain : 网站的域名。
Path : 设置 cookie 的目录或网页的路径。如果您想从任意的目录或网页检索 cookie,此字段可以留空。
Secure : 如果此字段包含单词 "secure",那么 cookie 只能通过安全服务器进行检索。如果此字段留空,则不存在该限制。
Name=Value : cookie 以键值对的形式被设置和获取。
  • 25,STL 教程
容器:容器是用来管理某一类对象的集合。比如 deque、list、vector、map 等。
算法:算法作用于容器。它们提供了执行各种操作的方式,包括对容器内容执行初始化、排序、搜索和转换等操作。
迭代器:迭代器用于遍历对象集合的元素。这些集合可能是容器,也可能是容器的子集。

push_back( ) 成员函数在向量的末尾插入值,如果有必要会扩展向量的大小。
size( ) 函数显示向量的大小。
begin( ) 函数返回一个指向向量开头的迭代器。
end( ) 函数返回一个指向向量末尾的迭代器。
  • 26,标准库
标准函数库: 这个库是由通用的、独立的、不属于任何类的函数组成的。函数库继承自 C 语言。
面向对象类库: 这个库是类及其相关函数的集合。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值