其中一些内容摘自http://www.runoob.com/cplusplus/cpp-classes-objects.html
下面是我的总结
1.结构体定义方法
以单链表节点为例:
法一:
struct LNode {
int data; // 数据域
struct LNode *next; // 指针域
};
这样如果在main函数中需要定义一个单链表结点则:
LNode node;
如果要定义一个指向结点的结构体指针:
LNode *p
法二:
Typedef struct LNode {
int data; // 数据域
struct LNode *next; // 指针域
} *LinkList;
只是用typedef 为指向LNode的指针定义了一个新的名字而已
例如:
typedef int dog ;
格式为typedef type newnames;
这样 定义一个指向单链表结点的指针就可以直接
LinkList L;
其实完全等价于:
LNode *L
个人觉得第一种方法就够了 没必要使用第二种 至少在应付研究生入学考试以及复试的时候够了 但是有些参考书上 常用第二种
注意 LNode* p 与LNode *p是一样的效果 但是比如int* a,b,c; 和int *a,*b,*c效果一样吗??
答 不一样 int* a,b,c只有第一个是int类型的指针,但是b,c则是int型变量
所以养成好习惯 类型 *变量名
例子:
#include<iostream>
using namespace std;
int main(){
int* a,b,c;
b=5,c=4;
cout<<a<<endl;
cout<<b<<endl;
cout<<c<<endl;
return 0;
}
结果:
0x77451520
5
4
a输出的是十六进制的地址,而b,c是具体值
如果对a赋值会报错,
[Error] invalid conversion from 'int' to 'int*' [-fpermissive]
int 到int *是无效的转化
2.类定义方法
class Box
{
private:
double length; // 盒子的长度
double breadth; // 盒子的宽度
double height; // 盒子的高度
public:
double getLength(){ //length属性的getter
return this->length;
}
do