C++中namespace和class的区别

namespace作用是避免程序中的命名冲突,传统的C++程序是只有一个namespace,现在程序越来越复杂,为了防止程序员在合并不同程序时出现函数、类、结构体等命名的重复,所以用到命名空间。
名字空间包含类、函数、常量和模板声明等名字空间成员。例如:
namespace MyUnderstand
{
class info {int number;
              string name;
              public:
              void FristInstance (char *msg);
              void SecondInstance(int Num);
};
}
如何将名字空间成员类分离成多个源文件呢?
通过以下例子加以说明:
下面是名为 example.h 的头文件,其中定义了上面的 名字空间MyUnderstand,它包含类 info 的声明:

另外,在一个单独的源文件example .cpp 中,首先包含头文件 example.h 以便实现类 info 的成员函数 FristInstance () SecondInstance()
//example.cpp
#include "example.h"
void MyUnderstand::info::FristInstance ()
{ /*..*/ }
void MyUnderstand::info::SecondInstance()
{ /*..*/ }
要使用这个名字命名空间的成员,就必须使用这个成员在命名空间的路径,例如用类info就要添加它的全路径名即MyUnderstand::info。这样就能够调用这个命名空间的类。相同的命名空间的函数调用也是如此。

关于using关键字在命名空间的作用解释。
如果不用using关键字当命名空间在.h定义之后在使用命名空间里面的元素时要添加全路径。例如:
//example.h
namespace MyUnderstand
{
class info {int number;
              string name;
              public:
              void FristInstance (char *msg);
              void SecondInstance(int Num);
};
}
//example.cpp
#include "example.h"
void MyUnderstand::info::FristInstance ()
{ /*..*/ }
void MyUnderstand::info::SecondInstance()
{ /*..*/ }
使用using声明命名空间之后,在次使用声明时就不用再添加路径;例如:
#include "example.h"
int main()
{
using MyUnderstand::info; // 使用名字空间
info b;
info f;
b.FristInstance ();
f.FristInstance ();
//...
}
using 指令由关键字 “using namespace” 后跟名字空间名构成。在访问名字空间成员时不建议经常使用,其原因是这种方法将所有名字空间成员注入当前的范围,从而增加了潜在的名字冲突。
  • 4
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在C++,`class`是一种用户自定义的数据类型,可以封装数据和方法,实现面向对象编程。`class`定义了一个新的类型,它可以包含数据成员、成员函数、构造函数和析构函数等。 下面是一个简单的`class`示例,定义了一个`Person`类,包含`name`和`age`两个数据成员,以及`getName()`和`getAge()`两个成员函数: ```c++ #include <iostream> #include <string> using namespace std; class Person { private: string name; int age; public: Person(string name, int age) : name(name), age(age) {} // 构造函数 ~Person() {} // 析构函数 string getName() { return name; } int getAge() { return age; } }; int main() { Person p("Tom", 20); cout << "Name: " << p.getName() << endl; cout << "Age: " << p.getAge() << endl; return 0; } ``` 输出结果为: ``` Name: Tom Age: 20 ``` 在上面的示例,我们定义了一个`Person`类,包含了`name`和`age`两个私有数据成员,以及一个公有的构造函数、析构函数和两个成员函数。在`main`函数,我们创建了一个`Person`对象`p`,并通过成员函数访问了其私有数据成员。 除了`class`关键字外,C++还提供了另一种定义类的方式,即使用`struct`关键字。`struct`与`class`的区别在于默认的成员访问权限不同,`struct`默认的成员访问权限是公有的,而`class`默认的成员访问权限是私有的。除此之外,`struct`和`class`的语法和使用方法是相同的。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值