c++那些事儿学习笔记


c++那些事儿学习笔记

链接

const

用于修饰常量。

指针与const

1
2
3
4
const char * a; //指向const对象的指针或者说指向常量的指针。
char const * a; //同上
char * const a; //指向类型对象的const指针。或者说常指针、const指针。
const char * const a; //指向const对象的const指针。

static

在C++中,static静态成员变量不能在类的内部初始化。在类的内部只是声明,定义必须在类定义体的外部,通常在类的实现文件中初始化。

static就记住内存中只有一个备份

1
2
3
4
5
6
7
8
9
10
11
void test()
{
static int count = 0;
std::cout << count++ << std::endl;
}

int main()
{
test();
test();
}

extern

再一个文件中正常定义一个变量,其他文件想要使用这个变量则使用extern重新声明这个变量。注意使用extern的文件不可包含定义变量的文件。eg:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
//test.h
#include <iostream>
extern int count;
void write_extern(void)
{
std::cout << "Count is " << count << std::endl;
}
//main.c
#include <iostream>
//#include "test.h" 不可包含,负责就重复定义了
int count;
extern void write_extern();

int main()
{
count = 5;
write_extern();
}

文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#include <iostream>
#include <fstream>
//ofstream 文件输出流
//ifstream 文件输入流
//fstream 双向流
//open 打开文件
//close 关闭文件
// ios::app 追加,将写入追加到文件末尾
// ios::ate 文件打开后定位到文件末尾
// ios::in 输入,读取
// ios::out 输出,写入
// ios::trunc 若文件存在则覆盖文件从头写
// seek(n) 定位到文件的第n个字节
// seekg(n,ios::cur) 从当前位置向后数n个字节
// seekg(n,ios::end) 从文件末尾向前数n个
// seekg(0,ios::end) 指向文件末尾
// get() 获取一个字符
int main()
{
std::fstream f;
f.open("file", std::ios::out | std::ios::trunc);
f << "asdasd"<<std::endl;
f.close();
std::fstream r;
r.open("file", std::ios::in);
//r.seekg(5);
std::string str;
char c;
while (( c = r.get())!=EOF)
{
str.push_back(c);
r.seekg(1, std::ios::cur);
}
str.clear();
r.seekg(0, std::ios::beg);
char* ch = (char*)malloc(100*sizeof(char));
std::cin.getline(ch,100);
std::cout << ch << std::endl;

}

文章作者: 崔文耀
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 崔文耀 !
  目录