使用结构而不是类

时间:2015-11-03 19:55:29

标签: c++

我从未学过课,但我确实得到了一般的想法,我正在尝试。 下面的代码在网上找到,使用链表制作堆栈,我想知道我们是否使用了结构而不是类,这个程序会是什么样的?

#include<iostream>
using namespace std;


//   Creating a NODE Structure
struct node
{
int data;
struct node *next;
};

// Creating a class STACK
class stack
{
struct node *top;
public:
stack() // constructure
{
    top=NULL;
}
void push(); // to insert an element
void pop();  // to delete an element
void show(); // to show the stack
};
// PUSH Operation
void stack::push()
{
int value;
struct node *ptr;
cout<<"nPUSH Operationn";
cout<<"Enter a number to insert: ";
cin>>value;
ptr=new node;
ptr->data=value;
ptr->next=NULL;
if(top!=NULL)
    ptr->next=top;
top=ptr;
cout<<"nNew item is inserted to the stack!!!";

}

// POP Operation
void stack::pop()
{
 struct node *temp;
 if(top==NULL)
 {
    cout<<"nThe stack is empty!!!";
 }
 temp=top;
 top=top->next;
 cout<<"nPOP Operation........nPoped value is "<<temp->data;
 delete temp;
 }

// Show stack
void stack::show()
{
struct node *ptr1=top;
cout<<"nThe stack isn";
while(ptr1!=NULL)
{
    cout<<ptr1->data<<" ->";
    ptr1=ptr1->next;
}
cout<<"NULLn";
}

// Main function
int main()
{
stack s;
int choice;
while(1)
{
    cout<<"n-----------------------------------------------------------";
    cout<<"nttSTACK USING LINKED LISTnn";
    cout<<"1:PUSHn2:POPn3:DISPLAY STACKn4:EXIT";
    cout<<"nEnter your choice(1-4): ";
    cin>>choice;
    switch(choice)
    {
        case 1:
            s.push();
            break;
        case 2:
            s.pop();
            break;
        case 3:
            s.show();
            break;
        case 4:
            return 0;
            break;
        default:
            cout<<"Please enter correct choice(1-4)!!";
            break;
     }
  }
  return 0;
}

只是想知道如果我们使用结构而不是类,这段代码会是什么样的?

2 个答案:

答案 0 :(得分:2)

Struct几乎就像一个类。在Struct元素中,default是public,在类中它们是private。

答案 1 :(得分:-2)

想想这个小例子:

class TestClass
{
   int foo(void)
   {
      return (a * a);  // is equal to: return (this->a * this->a);
   }

   int a;
};


TestClass example;

example.foo();   // execute function foo of class TestClass with data of instance example

使用结构重写上面的内容如下所示:

struct TestClass 
{
   int a;
}

/* "struct implementation" of foo function */
int TestClass_foo(struct TestClass *this)
{
   return (this->a * this->a);
}

struct TestClass example;

TestClass_foo(&example);   // execute function TestClass_foo with data of example

所以让我们注意上面例子中使用结构时的差异:

  • 每次调用函数TestClass_foo时,都必须将指针传递给结构的实际实例。
  • 命名函数,如&#34; TestClass_foo&#34;很快就弄乱了......

所以在这个简单的例子中,一个类的好处看起来并不太令人印象深刻。但是通过这个你可以了解基本的差异。

但是一旦你开始使用继承或成员可见性(公共,私有,受保护),你就无法使用结构(或者只是带来巨大的开销)。但这就是C ++的用途,因此您不必考虑编译器如何使代码工作。