本文已参与「新人创作礼」活动,一起开启掘金创作之路。
游戏开发之类的初始化成员列表和委托构造函数(C++基础)
构造函数和其他函数不同,除了有名字,参数列表,函数体之外还有初始化列表。 委托构造函数 作用主要是程序员自己不想初始化,交给编译器初始化。 可初始化成员变量、父对象、成员变量。 初始化成员列表语法:类名(参数列表):初始化列表[成员变量名(值,即给成员变量赋值)]{函数体} 委托构造函数语法:类名(参数列表):[类名(参数列表)]{函数体}
TIPS:初始化列表和委托构造函数都是先执行初始化列表或委托构造函数的委托项才会执行本函数的函数体。
实例一:
class A
{
public:
//初始化成员列表格式
A():m(100)
{
std::cout << "默认构造调用" << std::endl;
p = new int;
}
int *p;
~A()
{
std::cout << "析构函数调用" << std::endl;
delete p;
}
//委托构造函数格式
A(int a_,int b_):A()
{
a = a_;
b = b_;
std::cout << "2个参数" << std::endl;
}
//委托构造函数格式
A(int a_):A()
{
a = a_;
b = 0;
std::cout << "1个参数" << std::endl;
}
//初始化成员列表格式
A(char b, int a_ = 200):m(300)
{
a = a_;
std::cout << "有1个默认参数" << std::endl;
}
const int m;
//初始化列表:只有构造函数有这种写法
//可初始化成员变量、父对象、成员变量
//语法:类名(参数列表):初始化列表[成员变量名(值,即给成员变量赋值)]{函数体}
//委托构造函数:自己不想初始化,交给编译器初始化
//语法:类名(参数列表):[类名(参数列表)]{函数体}
//注意:初始化列表和委托构造函数都是先执行初始化列表或委托构造函数的委托项才会执行本函数的函数体
private:
int a;
int b;
};
int main()
{
if (true)
{
A a;
}
A a1(1, 2);
A a2(1);
A a3('b');
A a4;
return 0;
}
实例二:
class A
{
public:
#if 0
//传统方式
A(int a, int b, int c) { _a = a; _b = b; _c = c; }
#else
//初始化列表方式
A(int a, int b, int c) :_a(a), _b(b), _c(c) {}
#endif
private:
int _a;
int _b;
int _c;
};
版本声明:本文为CSDN博主[ufgnix0802]的原创文章。
原文链接:(blog.csdn.net/qq135595696…)