专业汉语词典知识平台,分享汉字词语知识、历史文学知识解答!

励北网
励北网

C++命名空间的详解

来源:小易整编  作者:小易  发布时间:2023-03-07 04:26
摘要:C++命名空间的详解命名空间扩展:C:面向过程:思想——功能分解,自顶向下,逐层细化;程序=数据结构+算法数据结构:对数据的存储方式算法:操作数据的步骤(功能函数)C++:面向对象(OOP):思想——将算法和数据结构作为一个整体,称作对象;...

C++命名空间的详解

命名空间

扩展:

C:面向过程:思想——功能分解,自顶向下,逐层细化;

程序=数据结构+算法

数据结构:对数据的存储方式

算法:操作数据的步骤(功能函数)

C++:面向对象(OOP):

思想——将算法和数据结构作为一个整体,称作对象;

对象=算法+数据结构

程序=对象+对象+……

知识点1【C++的三大特性】
封装:
把客观的事物抽象成一个类(将数据和方法打包在一起,加以权限的区分,达到保护并安全使用数据的目的)
继承:
继承所表达的是类之间相关的关系,这种关系使得对象可以继承另外一类对象的特征和能力
目的:避免共用代码的重复开发,减少代码和数据冗余
多态:“一个接口、多种方法”——多种状态。
程序在运行时才决定调用的函数,它是面向对象编程的核心概念 
静态多态:
动态多态:
知识点2【C++对C的扩展】

1、:: 作用域运算符(表明数据、方法的归属性问题)

在C语言中,当全局变量和局部变量同名时,无法直接使用局部变量(只能使用指针进行操作);但在C++中,可以使用双冒号::取全局变量。


#include <iostream>using namespace std;int a = 10;int main(int argc, char *argv[]){    int a = 20;    cout <<"局部变量"<< a << endl;    cout <<"全局变量"<< ::a << endl;    return 0;}

运行结果:

C++命名空间的详解

2、C++命名空间(namespace)

2.1:作用:为了 解决C++工程代码命名冲突问题

namespace命名空间的定义:

2.2:本质:划分不同的作用域,用于管理函数名、类名、和变量名

注意:命名空间只能在全局范围内定义


#include <iostream>using namespace std;namespace A {    int a = 100;}namespace B {    int a = 200;}void test01(){    cout<<"A中a = "<<A::a<<endl;    //A::a  a属于A中的a    cout<<"B中a = "<<B::a<<endl;    //B::a  a属于B中的a}int main(int argc, char *argv[]){    test01();    return 0;}

2.3:命名空间可以嵌套命名空间


#include <iostream>using namespace std; //命名空间的嵌套,不是局部定义namespace A {    int a = 1000;    namespace B {        int a = 2000;    }}void test01(){    cout<<"A中a = "<<A::a<<endl;    //A::a  a属于A中的a    cout<<"B中a = "<<A::B::a<<endl;    //B::a  a属于B中的a,B属于A}int main(int argc, char *argv[]){    test01();    return 0;}

2.4:命名空间是开放的,随时可以加入新的成员,事先不知道要用,使用时才会添加:


#include <iostream>using namespace std;namespace A {    int a = 100;    int b = 200;}//将c添加到已有的命名空间A中namespace A {    int c = 300;}void test01(){    cout<<"A中a = "<<A::a<<endl;    cout<<"A中a = "<<A::b<<endl;    cout<<"A中a = "<<A::c<<endl;}int main(int argc, char *argv[]){    test01();    return 0;}

2.5:命名空间可以存放变量和函数

函数在命名空间内定义:


#include <iostream>using namespace std;namespace A {    int a = 100;//变量成员    void func()//函数 在命名空间内定义{        cout<<"func遍历a = "<<a<<endl;//不用写成A::a    }}void test01(){    cout<<"A中a = "<<A::a<<endl;//在外部需要说明归属性    A::func();//函数的使用,也需要说明归属性}int main(int argc, char *argv[]){    test01();    return 0;}

2.6:命名空间中的函数可以在命名空间外定义,在内声明:


#include <iostream>using namespace std; namespace A {    int a = 100;//变量成员    void func();//函数声明} #if 0void func()//普通函数{    cout<<"func遍历a = "<<a<<endl;}#endif void funb()//普通函数{    cout<<"funb遍历a = "<<A::a<<endl;} //函数在命名空间外定义时一定加作用域void A::func()//成员函数{    //访问命名空间的数据时不用加作用域    cout<<"func遍历a = "<<a<<endl;} void test01(){    A::func();    funb();} int main(int argc, char *argv[]){    test01();    return 0;}

运行结果:

C++命名空间的详解

2.7:无名命名空间(了解):

只能用在当前文件,不能被其他文件使用;

作用:类似于加static修饰,只能在本文件内部使用;

注意:一般不会定义无名的命名空间

2.8:命名空间别名(不常用):

类似于赋值的方法,不是typdef。

使用效果一样:



本文地址:百科问答频道 https://www.neebe.cn/wenda/918238.html,易企推百科一个免费的知识分享平台,本站部分文章来网络分享,本着互联网分享的精神,如有涉及到您的权益,请联系我们删除,谢谢!


百科问答
小编:小易整编
相关文章相关阅读
  • C++命名空间的详解

    C++命名空间的详解

    C++命名空间的详解命名空间扩展:C:面向过程:思想——功能分解,自顶向下,逐层细化;程序=数据结构+算法数据结构:对数据的存储方式算法:操作数据的步骤(功能函数)C++:面向对象(OOP):思想——将算法和数据结构作为一个整体,称作对象;...

  • 周排行
  • 月排行
  • 年排行

精彩推荐