C++中int x_和int x有什么区别

Sat*_*der 0 c++

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)

Sla*_*ica 5

这段代码中_(下划线)的作用是什么?

这让toptop_2个不同的标识符。以同样的方式制作它top1topFOOBAR

为什么会产生如此大的差异?

当您top在此处使用for member 时,您top也会与命名的方法发生冲突。更改toptop_top1将使该冲突消失-您的班级中不能有两个名称相同的不同内容。

有些人有一个习惯,给成员变量特殊的名字,像m_member或者member_甚至_member(最后一个是不是安全的,但有时仍在使用)。这种修饰使读者可以看到代码在一侧处理成员 var 并避免像在另一侧那样发生名称冲突。