C++语言在c语言的基础上添加了面向对象编程和泛型编程的支持。
第一个helloworld
#define _CRT_SECURE_NO_WARNINGS#include using namespace std;//标准命名空间int main(){//cout是标准的输出流对象,打印字符串//endl是刷新缓冲区,并且换行cout << "hello world!"<< endl;system("pause");return EXIT_SUCCESS;}
**面向对象的三大特征:
封装 继承 多态
**为什么有命名空间?
是为了解决多人合作是取标识符是重命名的问题呢
什么是命名空间
namespace A{//A是空间的名字int a;void func(){}}
命名空间的注意:
1) 命名空间只能写在全局
2) 命名空间可以嵌套命名空间
3) 命名空间是开放,随时可以加入新成员,但是新成员只能在加入后使用
4) 匿名的命名空间
5)命名空间可以取别名
6) 分文件编写代码时,如果. h中有两个命名空间,但是里面的成员函数或成员变量同名时,在.cpp中实现函数时,需要加上命名空间
test.h
#pragma once#define _CRT_SECURE_NO_WARNINGS#include using namespace std;namespace myMaker1{void func();}namespace myMaker2{void func();}
test.cpp
#include "test.h"void myMaker1::func(){cout << "func" << endl;}
02 命名空间.cpp
#define _CRT_SECURE_NO_WARNINGS#include #include "test.h"using namespace std;namespace A{//A是空间的名字int a;void func(){}}//命名空间可以嵌套命名空间namespace Maker{int a =2222;namespace B{int b = 40;}}//新成员只能再加入后使用//void test()//{//cout << Maker::c << endl;//}namespace Maker{int c = 30;}int mya = 10;//匿名的命名空间类似于static int d=50//相当于定义了一个静态的全局变量//在当前文件中使用不能在其他文件中使用namespace{int d = 50;}//命名空间取别名void test01(){// 新名字 旧名字 namespace nameMaker = Maker;cout << nameMaker::a << endl;}int main(){//namespace B//{//}int mya = 20;//就近原则这里打印的是20cout << "mya=" << mya << endl;//如果你想全区变量的10 就要用作用域cout << "::mya=" << ::mya << endl;//访问命名空间的数cout << Maker::c << endl;//访问嵌套命名空间的数cout << Maker::B::b << endl;//test();errcout << d << endl;test01();myMaker1::func();system("pause");return EXIT_SUCCESS;}
using的声明和编译指令
#define _CRT_SECURE_NO_WARNINGS#include using namespace std;//全局的namespace A{int a = 10;int b = 20;int c = 30;}void test01(){//打印方式//1、cout << A::a << endl;//int a = 50;//cout << a << endl;//2、using声明是让命名空间中某个标识符可以直接使用//声明的相当于放入这个函数中 不能再定义上面的abc 会报错有二义性using A::a;cout << a << endl;//int a = 50; //err //注意using声明了某个变量在该作用域不能定义同名的变量//cout << a << endl;}void test02(){//using编译指令让某个命名空间中的标识符都可以直接使用using namespace A;cout << a << endl;cout << b << endl;cout << c << endl;//局部的int a = 100;//无二义性cout << "a=" << a << endl;}int main(){test01();//test02();system("pause");return EXIT_SUCCESS;}