结构体和类
1、结构体的默认权限是公有的(public),而类的默认权限是私有的(private)。
2、一个结构体或类中的静态成员函数无法调用它们的非静态成员属性和非静态成员方法。反之,则可以。
3、一般的构造函数都现在公有(public)下,如果一个结构体或者类的构造函数写在了私有下,则无法生成此对象。
类的继承
1、面向对象编程的最大好处就是可以提高代码的复用性。
2、生成派生类对象时首先调用基类的构造函数,再调用派生类的构造函数。派生类销毁时则相反,首先调用派生类的析构函数,再调用基类的析构函数。
3、派生类继承基类的非私有成员变量和非私有成员函数。派生类也可以有自己的成员变量和方法。
4、基类指针可以在不进行显式类型转换的情况下指向派生类对象;基类引用可以在不进行显式类型转换的情况下引用派生类对象。需要注意的是基类指针或引用只能调用基类方法,不能调用派生类方法。
5、派生类构造函数应通过初始化成员列表将基类信息传递给基类构造函数。
6、派生类构造函数应初始化派生类新增成员变量。
1
|
//声明一个动物类, class FAnimation { public: FAnimation(string Name_, unsigned int Age_); ~FAnimatino(); unsigned int GetAge() {return Age}; private: string ClassName; unsigned int Age; }; //cpp //初始化列表 FAnimation::FAnimation(string Name_, unsigned int Age_):ClassName(Name_), Age(Age_){}; ~FAnimation::FAnimatino(){};
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
TArray<FString>pakFiles = UPakLoaderLibrary::GetFilesInPak(PakPaths, true);
for (auto pakFile : pakFiles)
{
FString str = UBlueprintPathsLibrary::GetExtension(pakFile);
if (!str.Equals("uexp") && !str.Equals("ubulk"))
{
//仅加载BPActor
if (pakFile.Contains("Blueprints/Sku"))
{
pakFile.Split("Content/", nullptr, &pakFile);
pakFile = "/PTPakDLC/" + pakFile;
//去掉.uasset后缀,获取纯包路径:/PTPakDLC/Blueprints/Sku/Lights/SpotLight_P
pakFile.Split(".", &pakFile, nullptr);
AssetFiles.AddUnique(pakFile);
}
}
}
|