C++—Cherno
一、C++中的引用
#include<iostream>
#include"Log.h"void Increment(int& value) {value++;
}int main()
{int a = 5;int b = 10;//引用不能只声明不赋值//&就和数据类型差不多,要和int写在一起,int&int& ref = a;ref = b;Increment(ref);Log(a); Log(ref);/*引用直接赋值一次int& ref = a;ref = b;这是不正确的,这样会把b的值赋值给a,就是a等于10,b等于10*/}
二、类
#include<iostream>
#include"Log.h"class Player
{
public://默认情况下是privateint x, y;int speed;void Move(int arg1, int arg2) {x = x * arg1;y = y * arg2;}
};int main() {Player player;player.x = 2;player.y = 3;player.Move(2, 3);std::cout << "x=" << player.x << std::endl;std::cout<< "y=" << player.y << std::endl;
}
不需要刻意的去写类,类只是糖衣炮弹,辅助程序员的,没有类也能很好的去用,只有C也不是不能用。
三、结构体和类
几乎没有区别,唯一区别是,默认情况下,类是私有的,如果你没有指定任何可见的修饰符,类的成员是不可见的。
struct默认是公有的。
如果仅仅是为了表示一些数据,我会用结构体struct
如果是实现一个比较复杂的类,有很多功能,又要继承,我会用class
四、如何写一个C++类
#include<iostream>
#include"Log.h"/*message大部分情况下是无用的信息,一般不需要输出任务:1、如果当前日志级别为0,则只输出Info信息2、如果当前日志级别为1,则不打印Info级别的信息3、如果当前日志级别为2,则只输出Error信息
*/
class LOG
{
public:int info = 0;int warning = 1;int error = 2;
private://默认情况下当前日志的提示等级是警告int currentLevel = warning;//func
public:void setLevel(int level) {currentLevel = level;}//Infovoid Info(const char* message) {if(currentLevel == info)std::cout << "【Message】" << message << std::endl;}//Warnvoid Warn(const char* message) {if(currentLevel == warning)std::cout << "【Warning】" << message << std::endl;}//Errorvoid Error(const char* message) {if(currentLevel >= warning)std::cout << "【Error】" << message << std::endl;}
};int main() {LOG log;log.setLevel(log.warning);log.Info("你好");log.Warn("你好");log.Error("你好");}