部分代码:
class list
{
public:
list *head;
list *tail;
list *next;
int num;
list()
{ head=tail=next=null;}
}
class queue:public list{};
queue类中存储函数看不来,如下
void queue::store(int i)
{
list *item;
item=new queue;
item->num=i;
if(tail)
tail->next=item; //这里怎么看啊
tail=item;
item->next=NULL; //这里也看不懂
if(!head)
head=tail; //也不清楚
}
还是不能理解啊,tail和next不是同级的指针吗?用了成员指向符让我觉得tail也指向一个list的类空间,而next为这个类空间的成员指针,这个函数用来建立一个链表,我看不来如果输入i,他放哪里,怎么放了?
追答关键这里是对指针概念的理解和掌握以及对于链表的实际单元都是临时分配(地址空间不连续)时如何将它们能够串起来!
就像猜谜一样,你只有找到至少一个单元(head或tail)时才能找到所有单元,那前提就是这一个单元必须具有其他相关的信息,这就是这里next的作用。
我前面写得不完全正确,这边链表实际上是单向链表,但提供了一个指向最后单元的地址。
本质上,既然指针是地址,它无所谓类型,你的list类完全可以这样写:
class list
{
public:
void *head;
void *tail;
void *next;
};
只是在后面的访问中必须进行强制转换,才能按list的结构(class实际上是struct的扩展)访问其中的成员。
在C++中,怎么理解“->”是一个单目运算符,它的操作数时什么,返回值又是...
A->B,基本上是把A当作指针在用,虽然有时是类只不过重载了->,但是你这么理解绝对错不了,与.的功能差不多,也是得到地址执行相应代码)。简单的说->左边是指针,.左边是对象 下面是链表的模版类,重载了此操作符,希望你能看得懂 \/\/ 练习:仿照STL实现一个双向线性链表模板容器#include <iostre...
在C++中,怎么理解“->”是一个单目运算符,它的操作数时什么,返回值又是...
->的左边是变量,而右边只能是成员,由于不指定所属对象的成员本身不能作为函数参数,所以->的运算符重载函数只能被看作接受一个操作数,其返回的是一个指针(也就是说A->B的时候如果A不是指针,则解释为c->B,其中c是对A调用运算符函数->所返回的指针)...
c++ ->是什么
->代表指向它内部的属性。当对象是实体的时候不能用“->”,要用“.”。而当是对象实体的地址的时候则用“->”如:class A \/\/定义类 { void p();};A a;\/\/申明对象 要调用p()方法,则可以用下列语句:a.p();或者 (&a)->p(); 其中 &a 代表a对象的地址。head=head->next 其中...
c++中使用指针的.和->运算符的区别
一般,结构体和类中,对于非结构指针实例用"."(下面的pt),而指针型的结构体实例用"->"(下面的*p)。举例子来说:struct point { int x;int y; \/\/包含两个变量成员 };void main(){ point pt;point *p;pt.x=1;pt.y=2;cout<<pt.x<<endl<<pt.y<<endl;\/\/不能用“->”cout<<p...
c++中 -> 是什么意思,如何使用
->是指针的指向运算符,通常与结构体一起使用。具体使用方法可以参考如下程序:include<stdio.h>struct stu \/\/ 定义一个结构体{ char name[10]; \/\/ 姓名 int num; \/\/ 学号 int age; \/\/ 年龄};void main(){ struct stu *s; \/\/ 定义一个结构体指针 char str[]...
c++中的->>是什么意思?
->> 这个不可能是重载的,因为重载只能是已经存在的运算符,而->>我是没见过。如果你指的是 -> ,那么这个是指针。如果你指的是 >> , 那么这个是输入流。其他的我也不知道了,呵呵,孤陋寡闻了我。。。
c++中的 -> 是什么意思?
这个符号出现在变量作用域中,是一个作用与运算符 当全局变量和局部变量重名时,在快内全局变量将被屏蔽,要想访问全局变量时就要用 “::”例如 include<iostream.h> int x ;int main(){ int x =12 ;cout << " x = " << :: x << endl ;return 0 ;} 说明:主函数外面的叫全局变量...
c++中的:: -> >>分
C++中的两个特殊运算符,::和->>>,对于程序的变量管理和数据操作具有重要意义。首先,作用域运算符"::"用于控制变量的作用域。在函数或代码块内部,如果遇到与全局变量同名的局部变量,通过"::"可以在当前作用域之外找到全局变量,以避免命名冲突。"::"就像一个导航工具,帮助我们明确变量的来源范围...
C++中“->”和“.”在使用中有什么区别呢
1、->是指针指向其成员的运算符 .是结构体的成员运算符。最大的区别是->前面放的是指针,而.前面跟的是结构体变量。2、例如:struct A{ int a; int b;};A *point = malloc(sizeof(struct A));point->a = 1;A object;object.a = 1;...
C++语法错误 : 缺少";"(在"->"的前面)
1 SimpleCircle *itsRadius2 = NULL;定义了一个指向SimpleCircle类型的空指针,这样你后一句就不能运行了;要么就是:1 SimpleCircle itsRadius2;这样就是对SimpleCircle这个类实例化,然后就可以执行后面一条语句了。这样的话要把后一条语句的->改为点运算符(.)。因为->是用于指针的。你的代码应该...