C++ 入门教程学习

 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() );

猜你喜欢

转载自blog.csdn.net/qq_36848370/article/details/81258606