初学C++(一)

前言

在总结完c语言后,今天我来带大家聊聊c++的知识。c++听名字我们就知道它和c语言有非常深的渊源,实际上他们也确实有点形影不离,通常大家在谈到c或是c++时,都会带上彼此,所以学习c++对我们非常重要。


一、C++是什么?

本贾尼·斯特劳斯特卢普博士,于1979年四月份在贝尔实验室在分析UNIX系统内核流量时,希望有一种有效的更加模块化的工具。 1979年10月完成了预处理器Cpre,为C增加了类机制,也就是面向对象,1983年完成了C++的第一个版本,C with classes(带类的C)也就是C++。 那么我们就会考虑到一个问题,C和C++到底有什么异同呢?

二、C++与C的不同点(先总结)

1.C++完全兼容C的所有内容;

2.C++支持面向对象的编程思想(抽象、封装、继承、多态);

3.支持运算符、函数重载;

4.支持泛型编程、模板;

5.支持异常处理;

6.类型检查严格。

三 、第一个C++程序

1.文件扩展名

.cpp .cc .C .cxx

2.编译器

g++大多数系统需要额外安装,ubuntu系统下的安装命令:
sudo apt-get update
sudo apt-get install g++
gcc也可以继续使用但需要增加参数 -xC++ -lstdc++

3.头文件

#include < iostream>
#include <stdio.h>可以继续使用
#include < cstdio> 建议这样使用

4.输入/输出

cout << 标准输出
cin >> 标准输入(不需要取地址,因为c++中有引用)
cout/cin会自动识别数据类型
scanf/printf也可以继续使用
注意:cout和cin是标准库类对象,而scanf/printf是标准库函数。

5.增加了名字空间

std::cout
using namespace std;

示例代码:

#include <iostream>
using namespace std;

int main()
{
	int n = 0;
	cin>>n;
	cont<<"Hello world"<<endl;
	cont<<n<<endl;
}

三.名字空间

1、名字空间:标识符的命名范围,就是把原本的全局空间进行拆分使用,形成一个个独立的命名空间,防止全局变量的命名冲突。


在项目中函数名、全局变量、结构、联合、枚举、类,非常有可能名字冲突,而名字空间就对这些命名进行逻辑空间划分(不是物理单元划分),为了解决命名冲突。
namespace 空间名{
//定义变量
//定义函数
//设计新类型
}

注意:命名空间可以重名,同名的命名空间会自动合并(为了让声明和定义可以分开实现),同名命名空间如果有同名标识符,依然会命名冲突 。

2、如何使用命名空间:


直接使用:::域限定符、空间名::标识符。使用麻烦,但是安全// 导入后使用:using namespace 空间名。使用方便,但依然有冲突的风险,相当于把垃圾分类后又倒入同一辆垃圾车。


3、匿名名字空间:也就是默认的全局空间,匿名空间中的标识符可以通过::标识符来访问,因此也就可以访问被屏蔽的全局的标识符。


4、名字空间内部可以再定义名字空间,这种写法叫名字空间的嵌套。
namespace n1
{
   int num = 1;
   namespace n2
   {
      int num = 2;
      namespace n3
      {
         int num = 3;
      }
    }
}

多层名字空间在使用访问时逐层分解。
例如:如果要访问num=3的那个num,则:n1::n2::n3::num;
不同层次的空间中,可以重名,内层会自动屏蔽外层的标识符。
由于名字空间可以嵌套,这样就导致在使用内层成员时过于麻烦,可以给名字空间取别名来解决这个问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值