《C++ Primer》学习笔记

本文介绍了C++编程的基础概念,包括变量的定义与声明、头文件的使用、预处理器变量的作用、命名空间的using声明、标准库string和vector类型的应用以及引用类型的概念。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

2008年7月18日 台风海鸥登陆

1、声明与定义

 变量的定义用于为变量分配存储空间,还可以为变量指定初始值。在一个程序中,变量有且仅有一个定义。

变量的声明用于向程序表明变量的类型和名字。变量的声明包括对象名、对象类型和对象类型前的关键字extern:

当设计头文件时,记住定义和声明的区别是很重要的。定义只可以出现一次,而声明则可以出现多次

***因为头文件包含在多个源文件中,所以不应该含有变量或函数的定义。

   const 变量默认时是定义该变量的文件的局部变量。所以把它们的定义放在头文件中是合法的。

2、include

#include 指示只接受一个参数:头文件名。预处理器用指定的头文件的内容替代每个 #include。我们自己的头文件存储在文件中。系统的头文件可能用特定于编译器的更高效的格式保存。无论头文件以何种格式保存,一般都含有支持分别编译所需的类定义及变量和函数的声明。

C++ 预处理器继承于 C 语言。但C++ 程序以高度受限的方式使用预处理器。

3、预处理器变量

设计头文件时,应使其可以多次包含在同一源文件中,这一点很重要。我们必须保证多次包含同一头文件不会引起该头文件定义的类和对象被多次定义。

头文件保护符用于避免在已经见到头文件的情况下重新处理该头文件的内容。

头文件保护符是指为防止头文件被同一源文件多次包含而定义的预处理器变量

 

预处理器变量有两种状态:已定义或未定义。(为了避免名字冲突,预处理器变量经常用全大写字母表示。)定义预处理器变量和检测其状态所用的预处理器指示不同。#define 指示接受一个名字并定义该名字为预处理器变量。#ifndef 指示检测指定的预处理器变量是否未定义。如果预处理器变量未定义,那么跟在其后的所有指示(如处理头文件)都被处理,直到出现 #endif

#ifndef TEST_H
#define TEST_H
// 其他处理代码,如处理头文件
#endif
 

4、命名空间的 using 声明

使用 using 声明可以在不需要加前缀 namespace_name:: 的情况下访问命名空间中的名字。using 声明的形式如下: using namespace::name;

如:

#include <string>

#include <iostream>

using std::string;

using std::cin;

int main()

{

  string s;//相当于std::string

  cin >> s;//相当于std::cin

}

5、标准库 string 类型

string的size() 成员函数似乎应该返回整形数值,或无符号整数。但事实上,size 操作返回的是sring::size_type 类型的值。如:

 string str("some string");
 for (string::size_type ix = 0; ix != str.size(); ++ix)
  cout << str[ix] << endl;

 

当进行 string 对象和字符串字面值混合连接操作时,+ 操作符的左右操作数必须至少有一个是 string 类型的,如:

 string s1 = "hello";   // no punctuation
 string s2 = "world";
 string s3 = s1 + ", ";           // ok: adding a string and a literal
 string s4 = "hello" + ", ";      // error: no string operand
 string s5 = s1 + ", " + "world"; // ok: each + has string operand
 string s6 = "hello" + ", " + s2; // error: can't add string literals

 

 6、标准库 vector类型

vector 不是一种数据类型,而只是一个类模板,可用来定义任意多种数据类型。vector 类型的每一种都指定了其保存元素的类型。因此,vector<int>vector<string> 都是数据类型。

 7、关于引用类型

引用类型实际上就是一个变量的别名,指向同一个内存地址


 

东子文

待续

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值