C++
C++是C语言的继承,它既可以进行C语言的过程化程序设计,又可以进行以抽象数据类型为特点的基于对象的程序设计,还可以进行以继承和多态为特点的面向对象的程序设计。
C++有四大特性:抽象,封装,继承,多态。 这些特性将会在后面的博客中详细解释。
在这篇博客中主要总结一下C++入门的基础知识;
1.C++文件的命名方式
创建C++工程的文件的命名方式与C语言不同,C文件的后缀为:.c ,而C++文件的后缀为: .cpp ;
如下图:
2.C++关键字:
在C++98标准下总共有63个:
asm do if return typedef |
auto double inline short typeid |
bool dynamic_cast int signed typename |
break else long sizeof union |
case enum mutable static unsigned |
catch explicit namespace static_cast using |
char export new struct virtual |
class extern operator switch void |
const false private template volatile |
const_cast float protected this wchar_t |
continue for public throw while |
default friend register true |
delete goto reinterpret_cast try |
auto decltype nullptr constexpr noexcept |
final override sizeof… default delete |
在早期C/C++中auto的含义是:使用auto修饰的变量,是具有自动存储器的局部变量,但是并没有很普遍的使用起来。
C++11中,标准委员会赋予了auto全新的含义即:auto不再是一个存储类型指示符,而是作为一个新的类型指示符来指示编译器,auto声明的变量必须由编译器在编译时期推导而得。
注意: 使用auto定义变量时必须对其进行初始化,在编译阶段编译器需要根据初始化表达式来推导auto的实际类型。因此auto并非是一种“类型”的声明,而是一个类型声明时的“占位符”,编译器在编译期会将auto替换为变量实际的类型。
auto的使用细则和限制:
- auto与指针和引用结合起来使用;
用auto声明指针类型时,用auto和auto*没有任何区别,但用auto声明引用类型时则必须加&; - 在同一行定义多个变量时,这些变量必须是相同的类型;
- auto不能作为函数的参数;
- auto不能直接用来声明数组;
- auto不能定义类的非静态成员变量;
- 实例化模板时不能使用auto作为模板参数
auto在实际中最常见的优势用法就是跟博客后边会讲到的C++11提供的新式for循环,还有lambda表达式等进行配合使用。
3.命名空间——namespace
使用命名空间的目的是对标识符的名称进行本地化,以避免命名冲突或名字污
染,namespace关键字的出现就是针对这种问题的。
- 命名空间定义:
定义命名空间,需要使用到namespace关键字,后面跟命名空间的名字,然后 接一对{} 即可,{}中即为命名空间的成员。
注意: 一个命名空间就定义了一个新的作用域,命名空间中的所有内容都局限于该命名空间中 - 命名空间使用:
命名空间有三种使用方式:- 加命名空间名称及作用域限定符;
- 使用using将命名空间中成员引入;
- 使用using namespace 命名空间名称引入;
namespace N
{
int a;
int b;
int Add(int num1,num2)
{
return (num1 + num2);
}
}
//加命名空间名称及作用域限定符;
int main1()
{
cout << N::a << endl;
return 0;
}
//使用using将命名空间中成员引入;
using N;;b;
int main2()
{
cout << N::a << endl;
cout << b << endl;
return 0;
}
//使用using namespace 命名空间名称引入;
using namespace N
int main3()
{
cout << N: