C++学习笔记(第一篇)

一、观看YouTube的C++视频笔记

国内教学视频真的是又臭又长,感觉讲课讲的明白不是本意,讲的让同行挑不出理才是关键,并且专攻概念不攻原理,奈何我基础薄弱不堪重负,遂看国外视频破罐子破摔了。本文纯属个人理解,如果大佬发现有错欢迎指出。

二、 指针

指针只是一个存储着内存地址的整数,变量前加 & 表示这个变量的地址,地址前 *表示这个地址所对应的存储空间。

int var = 8;    //var所在存储空间内存储的int型号值是8
int* ptr = &var   //ptr的值为var所对应的存储空间的地址,这句话声明了该地址存储空间的属性
*ptr = 10       //将这个存储空间内存放的数改为10,因此var存放的值也变为10,*ptr相当于是var的另一种表示方法

三、引用

1.引用时建立在指针原理之上的另一种应用。

void Increment(int value)
{
	value++;
}

void main()
{
	int a = 5;
	Increment(a);    
}

上面的程序执行完成后输出a的值依然为5,因为上面的子函数执行的操作实际上是:建立了一个与a值相同的变量value,并对value进行自增,与a完全没关系。因此想要通过上面的子函数改变a的值可以写成下面这样。

void Increment(int& value)
{*value)++;
}

void main()
{
	int a=5;
	Increment(&a);    
}

但是上面这样看起来就很不友好,于是采用引用的方法,则上面的代码可以优化为:

void Increment(int& value)    //对主函数传上来的存储空间进行引用
{
	value++;
}

void main()
{
	int a = 5;
	Increment(a);    
}

这样最终输出的a的值变为了6。不要一看到&就认为是取地址,也可能是引用。

2.注意:
(1)int&不是&贴着int,int&本身就是一种变量类型
(2)一旦声明了引用就不能跟换他所引用的对象。
(3)声明一个引用时一定要将一个实际的变量赋值给它,不能只声明不赋值,因为引用不是真的变量。

int main()
{
	int a = 5;
	int b = 8;
	int& ref=a;
	ref=b    //这样做的结果是将b的值赋给了a,最终a,b的值都为8
}

四、类与面向对象编程、实例、方法

在一个游戏中要讲人物作做对象去编程(例如人物行走)需要传递很多变量(例如坐标,速度等),但是游戏中有很多人物,如果每个类似的函数都要传递很多参数那么程序会很不友好(想象一个函数传递30个参数)。因此人们会将包含参数相同的模型归类,由此产生了类的概念。C语言的结构体就相当于是C++中的类,如果说类和结构体有什么不同,那不同点就是结构体中的参数默认对整个程序公开,而类中的结构体默认不公开其他函数想要访问需要手动设置。

class Player()
{
public:			//注意要公开
	int x,y;
	int speed;
};				//注意要有分号

void Move(Player& player, int xa, int ya)
{
	player.x += xa * player.speed;
	player.y += ya * player.speed;
}

int main()
{
	Player player;
	Move(player,1,1);
}

我们可以将和类有关的函数放入类中,这样就如下图:

class Player()
{
public:			//注意要公开
	int x,y;
	int speed;
	void Move(int xa, int ya)
	{
		x += xa * speed;
		y += ya * speed;
	}
};				//注意要有分号

int main()
{
	Player player;
	player.Move(1,1);
}

用类作为类型设的变量就是实例,类中的函数就是方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值