作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
当我在学习一本关于 C++ 的书时,我遇到了这个。如果我们声明一个类,
class student {public:
void func(int v1,int v2)
{
//some code
}
//some members.
};
并使用类外的同名函数(非成员函数),例如
void func(int x,inty)
如果我想在上面声明的类的成员函数中调用这个非成员函数,语法是,
//inside the member function...
::func(x,y);
}
如果我错了,请纠正我。否则,假设我写了
using namespace std;
在程序的开头,下面的代码和前面的代码是等价的吗?
//inside the member function
std::func(x,y);
}
而且,如果我使用 std 以外的其他命名空间,答案会改变吗?? IE,如果我使用,
using namespace abc
是以下声明
abc::func(x,y)
和,
::func(x,y)
在任何条件下都绝对等效,还是在特定条件下它们会发生变化??
谢谢。
最佳答案
in the beginning of the program, Is the below code equivalent to previous one?
//inside the member function
std::func(x,y);
不,不是。因为您执行了合格 名称查找。这意味着您可以准确指定要定义的命名空间 func
。 std::func
,如果它存在,仍然属于 std
命名空间,而不是全局命名空间。
using namespace
指令仅使标识符可用于未限定 名称查找,由编译器自行决定。这一点非常复杂,我知道,但这是命名空间被认为有用的原因。
关于c++ - 关于::(scope_resolution_operator) 用法的疑问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43066102/
当我在学习一本关于 C++ 的书时,我遇到了这个。如果我们声明一个类, class student {public: void func(int v1,int v2) { //some code
我是一名优秀的程序员,十分优秀!