Day2

/*******************************************************************/
/*                       Day2                                      */
/*******************************************************************/
#include <iostream>
using namespace std;
class CCat
{
private:
	int age;
public:
	CCat(){ age = 2; };
	~CCat(){};
	int GetaAge() const { return age; };

};
int main()

{
//	double a = 100;
//	double *p = &a;
//	cout << *p << '\t' << &p << endl;
//	*p++;
//	cout << *p << '\t' << &p << endl;                   //++高于间接运算 相当于指针p+1后指向了一个其他的地方
//	cout << p <<'\t'<< *p<<'\t'<<sizeof(p)<<endl;       //0018FA78   100  4 所有指针的长度都相同:32位的处理器的计算机为4个字节 64位处理器的计算机为8个字节 但是这是64位处理器啊????
//	                                                    //对象本身需要8个字节 指针为存储地址需要4个字节
分配 使用和删除指针 删除指针,实际上是释放掉指针指向的指针中的内存,指针本身任然存在,可以重新赋值	
//	int *o = new int;
//	*o = 110;
//	cout << *o;
//	delete o;
//	o = new int;
//	*o = 0;
//	cout << *o;
//句号运算符和类成员访问运算符区别
	CCat* mycat = new CCat;   //new的返回值是一个内存地址
	//cout <<mycat.GetaAge();
	cout << (*mycat).GetaAge();
	cout << mycat->GetaAge();
	
	
	getchar();
	return 0;
}
//void SetAge(int anAge);
//int GetAge()const;  const成员函数,保证该方法不会修改任何类成员的值

//避免使用goto语句 是因为goto语句可以向前或者向后跳转到任意位置,不加选择的使用goto 语句会导致混乱 质量地下和无法阅读的程序

//break和continue 
//break语句立即跳出while循环,继续执行右括号后的语句
//continue跳转到循环的开头

//int *pAge = 0; pAge 被声明为用于存储整型变量的地址 切记指针要初始化0

//指针的三种作用:1.管理自由存储区中的数据 2访问类的成员数据和函数 3按照引用传递参数
//内存泄露的两种情况:1.如果指针在局部变量时,函数返回时,该函数的指针将不在作用域中,从而丢失,使用new分配的内存不会释放 从而不可用
//                    2.重新给指针赋值之前没有释放它原来指向的内存,如:
// int *p = new int;
//*p = 7;
// p = new int;
//*p = 9;

//.句号运算符可以用来访问堆栈中的创建的对象的成员和函数 要访问自由存储区中对象的成员 可以使用(*p).getage();
//但是这样很麻烦 C++中的-> 类成员访问运算符可以用于指针直接访问对象的成员

//P159的需要理解

//this是一个指向当前对象的指针,存储了对象的地址

//迷途指针 (失控指针或者悬浮指针):delete用于指针,但没有将她设置为空时引发的,如果在没有重新赋值的情况下重新使用这个指针,后果难以预料
//int *p = new int; *p = 9; delete p; *p = 20//程序奔溃 
//正解为 p = 0;此时delete没有问题或者可以重新分配内存

//const指针:记住根据const右边来看,右边是谁 谁不变 值不变还是指针不变
//const int *p1 const右边是int类型 说明p1是指向整型常量的指针 ,p1指向的值是不能修改的
//int * const p2 const右边是p2指针 说明p2是指向整型的常量指针,指向的值是可以修改的,但是不能指向其他变量

//为什么要在自由存储区中声明对象
//自由存储区中的对象在函数返回后任然存在,两外可以在运行时决定需要多少个对象 而不是事先声明

//指针是一个变量 存放的是另外一个变量的地址
//间接运算符返回的是指针指向的地址中的值,地址运算符返回变量的地址

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值