01-Hello World

新建工程

// 03-Helloworld.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <iostream>

using namespace std;

int main()
{
cout << "Hello World" << endl; //endl =end line 代表换行
int a;
cin>> a ;
cout<< a<<endl;
return 0;
}

2- auto关键字

auto关键字是能识别你的类型 

auto i=20; auto就是int型

3 函数要放在 mian函数之前

如果放在mian函数之后会找不到这个函数

不过这样放在上面声明一下也能执行

#include "stdafx.h"
#include <iostream>
using namespace std;
int add(int, int);
int main()
{
cout << "Hello World" << endl;
int c = add(2, 4);
return NULL;
}
int add(int a, int b) {
return a + b;
}

4 指针

声明一个int a =100;

通过a 可以访问到内存的数据,但是内存地址是不能修改的

指针就是用来存贮某个变量的内存地址的,

内存地址是16进制的

指针实例

// 04-指针.cpp : 定义控制台应用程序的入口点。
//


#include "stdafx.h"
#include<iostream>
#include<String>

using namespace std;

void change(int& a, int& b)
{
a = 100;
b = 200;
}

int main()
{
int a = 234;
int b = 100;
string str = "------";
//定义指针
//pa 是int类型的指针
int* pA; //或者int * 或者 int *pA
//把A的地址赋值给pa & 取地址符
pA = &a;
pA = &b;
cout << pA << endl; //等于16进制的地址
cout << *pA << endl; //*pA 代表地址中存的数据
*pA = 300;//*pA 代表 pA内存地址中的数据修改为300 也是就b=300
void *p1; //指向空类型的指针
p1 = &a;
p1 = &str;
//p1被两种类型赋值。所以自己分辨不出属于那种类型 需要强制转型
cout << (int*) p1 << endl;
//空类型的指针
int *p2 = NULL;
p2 = &a;
//指针 * 引用& reference
int * o1 = &a;
cout << o1 << endl;
int *o2 = &b;
//引用的声明
int &r1 = a;
//r1 现在引用a的地址
r1 = a;
cout << r1 <<"a"<< a << endl;
r1 = b;
//这时候 a的引用也会被修改成b的引用 a 的值也会修改为b的值
//r1还是指向a变量只是里面的数据修改了 a=b
cout << r1 << "a" << a << endl;
b = 400;
//a的值是不会发生改变
cout << r1 << "a" << a << endl;
//对引用的类型进行赋值相当于修改原变量
int c = 0, d = 0;
change(c, d);
cout << c << d<< endl;
return 0;
}

5- C++类

分为h 文件 (用来声明)

cpp文件  (用来放置实现)


类的声名

.h文件

//类的定义
class NameXXXX
{
//类 的成员

public:

int HP;
int Damage;
void Attack();

void TakeDamage();
NameXXXX(int hp,int damage);
NameXXXX();
private:

};

.cpp文件

#include "stdafx.h"
NameXXXX::NameXXXX() {
HP = 12;

Damage = 3;
}

NameXXXX::NameXXXX(int hp, int damage) {
HP = hp;

Damage = damage;
}
void NameXXXX:: Attack() {
cout << "攻击" << endl;
}

void NameXXXX::TakeDamage() {
cout << "掉血" << endl;
}

使用类 在main方法中

NameXXXX nameXXX1 = NameXXXX(12, 2);
NameXXXX nameXXX2 = NameXXXX ();
nameXXX1.HP = 100;
cout << nameXXX1.HP << endl;

类 的继承

 .h文件 继承自NameXXXX

重新写一个构造函数

#pragma once
#include "Enemy.h"
class NameXX : public NameXXXX
{
public:
NameXX();
NameXX(int hp,int damage);
~NameXX();
};

 .cpp文件重写 父类的构造函数

#include "stdafx.h"
#include "NameXX.h"


//重写父类的构造函数
NameXX::NameXX(int hp, int damage) :NameXXXX(hp, damage) {

}
NameXX::NameXX()
{
}


NameXX::~NameXX()
{
}

 main函数 入口

NameXXXX nameXXX1 = NameXXXX(12, 2);
NameXXXX nameXXX2 = NameXXXX ();
NameXX namexx1 = NameXX(12, 3);
cout << nameXXX1.GetHP() << endl;
cout << namexx1.GetHP() << endl;


虚幻4 拖拽在C++组件面板拖拽赋值

UPROPERTY(EDitAnywhere) //设置为外部拖拽赋值
ATriggerVolume * TriggerValue;

判断指针是否等于空

if(TriggerValue==nullptr){}

debug日志

//%s 是字符串组拼

    UE_LOG(LogTemp, Warning, TEXT("HELLO WORLD  %s"), *Owner->GetName() );