1.C++新手在指定结构成员时,不知道何时用.运算符,何时是用->运算符。
结论:如果结构标识符是结构名,则使用句点运算符;如果标识符是指向结构的指针,则使用箭头运算符。
#include <iostream> struct inflatable { char name[20]; float volume; double price; }; int main(){ using namespace std; int a; //仅为保持dos界面 inflatable *ps=new inflatable; cout<<"Enter name of inflatable item: "; cin.get(ps->name,20 ); cout<<"Enter volume in cubic feet: "; cin>>(*ps).volume; cout<<"Enter price : $"; cin>>ps->price; cout<<"Name: "<<(*ps).name<<endl; cout<<"Volume: "<<ps->volume<<"cubic feet "; cout<<"Price: $"<<ps->price<<endl; delete ps; cin>>a; //仅为保持dos界面 return 0; }
输出结果:
对于例子中的 *ps 这个结构指针:
ps->name 等价于 (*ps).name
2.new创建的对象不是用“*”或“.”来访问该对象的成员函数的,而是用运算符“->”
Rec *rec=new Rec(3,4); rec->getArea(); delete rec;
C++用new创建对象时返回的是一个对象指针,用new 动态创建的对象必须用delete来撤销该对象。只有delete对象才会调用其析构函数。
注意:new创建的对象不是用“*”或“.”来访问该对象的成员函数的,而是用运算符“->”;
总结:指针对象调用的方法都要用 ->