class Stack{
public:
char data_[100];
int top_;
};
class Stack{
public:
char data[100];
int top;
};
Run Code Online (Sandbox Code Playgroud)
以上两个类有什么区别?当我使用变量名称类似于 int top_ 的类时,堆栈操作运行良好,但是当我使用带有变量 int top 的类时,会弹出这样的错误:错误:成员的使用无效(您是否忘记了'&' ?) 错误:与先前的声明冲突。这段代码中_(下划线)的作用是什么?为什么会产生如此大的差异?
#include<iostream>
#include<cstring>
using namespace std;
class Stack{
public:
char data[100];
int top;
bool empty()
{
return (top == -1);
}
char top()
{
return (data[top]);
}
void pop()
{
top--;
}
void push(char c)
{
data[++top] = c;
}
};
int main()
{
Stack s;
s.top = -1;
char str[10] = "ABCDEFGH";
for(int i=0;i<strlen(str);i++)
s.push(str[i]);
cout<<str<<endl;
cout<<"Reversed string is : ";
while(!s.empty())
{
cout<<s.top()<<" ";
s.pop();
}
}
Run Code Online (Sandbox Code Playgroud)
这段代码中_(下划线)的作用是什么?
这让top和top_2个不同的标识符。以同样的方式制作它top1或topFOOBAR。
为什么会产生如此大的差异?
当您top在此处使用for member 时,您top也会与命名的方法发生冲突。更改top为top_或top1将使该冲突消失-您的班级中不能有两个名称相同的不同内容。
有些人有一个习惯,给成员变量特殊的名字,像m_member或者member_甚至_member(最后一个是不是安全的,但有时仍在使用)。这种修饰使读者可以看到代码在一侧处理成员 var 并避免像在另一侧那样发生名称冲突。