欢迎来观看温柔了岁月.c的博客
目前
设有C++学习专栏
C语言项目专栏
数据结构与算法专栏
目前主要更新C++学习专栏,C语言项目专栏不定时更新
待C++专栏完毕,会陆续更新C++项目专栏和数据结构与算法专栏
一周主要三更,星期三,星期五,星期天,
感谢大家的支持
C++与C的区别
//C与C++的区别
1.创建项目的源文件是.cpp
//C++的头文件 #include<iostream>
2.头文件包含的不同
//可以用C语言风格 #include<time.h> //C++的风格 #include<ctime>
3.分文件书写,仍然是和C语言风格一样
C++最简单的程序
#include<iostream> int main() { return 0; }
命名空间
什么是命名空间
namespace 空间名称 { } //用namespcae 声明一个东西
作用:可以提高标识符的使用,可以避免命名污染
怎么构建命名空间
namespace 空间名称 { 变量 函数 结构体 类 } //例子 namespace MM { int age = 1; void print() { ptintf("MM\n"); } }
如何访问命名空间
访问命名空间是通过
作用域(::)的使用
作用域的作用
作用1.访问空间中的成员:空间名称 :: 成员名
#include<iostream> #include<cstdio> namespace MM { int age = 1; } int main() { printf("%d", MM::age); return 0; }
例如这个案例,想要访问MM中的age
就需要通过作用域
MM::age
作用2.用来区分全局变量和局部变量
//作用2: 访问全局变量 #include<iostream> #include<cstdio> int age = 1; //全局变量 int main() { int age = 2; //局部变量 printf("%d\n", age); printf("%d\n", ::age); return 0; }
这里有个案例,看看两个age 的结果是什么
省略前缀式调用
using namespace 空间; //作用:省略前缀调用的时候, //后面访问空间中的成员的时候,**就不用在加作用域访问**
#include<iostream> #include<cstdio> namespace MM { int age = 1; } int main() { using namespace MM; printf("%d", age); }
注意:这样存在二义性,如果有两个空间都有age,
后面打印age时候吗,编译器不知道打印哪一个,就会报错
如果出现这种情况的话,处理方式加做作用域
#include<iostream> #include<cstdio> namespace MM { int age = 1; } namespace mm { int age = 2; } int main() { using namespace MM; using namespace mm; printf("%d\n", MM::age); printf("%d\n", mm::age); }
命名空间的嵌套
#include<iostream> #include<cstdio> namespace MM { int a = 1; namespace mm { int b = 0; } } int main() { printf("%d\n", MM::a); printf("%d\n", MM::mm::b); //namespacr嵌套, 多重作用域 return 0; }
就像这样,namespace 里面再嵌套一个namespace ,里面可以无限嵌套。
当然嵌套的同时,访问里面的成员,需要多重嵌套循环。
先声明后实现
//先声明后实现 #include<iostream> #include<cstdio> namespace MM { void print(); //先声明 } void MM::print() //后实现 要加作用域 { ; } int main() { return 0; }
C++程序的基本框架
标准的命名空间std
在C++中,所有的函数和类都属于std 这一标准的命名空间,所以在写代码的时候要有喜欢习惯性的操作
using namaspace std; • 1
#include<iostream> using namespace std; int main() { system("pause"); //暂停 return 0;