c++为什么有很多的初始化方法
2个回答
展开全部
初始化方法从大方面来说无非就三种:c的malloc方式,c结构的按顺序赋值的方式,c++的构造函数方式。
//比如有这么个结构
struct Point {
int x, y;
};
//第一种就是用malloc申请好内存,然后再对成员逐个赋值
void testMalloc() {
Point *pPoint = (Point *) malloc(sizeof(Point));
pPoint->x = 1;
pPoint->y = 2;
free(pPoint);
}
//第二种就是按顺序赋值
void testInline() {
Point point{1, 2};
}
第三种是构造函数,每次new或者定义栈变量,就会自动调用构造函数。
//比如定义很多种构造函数
struct Point {
int x, y;
//默认构造函数,不带任何参数
Point(): x(0), y(0) {}
//只带一个参数
Point(int xx): x(xx), y(0) {}
//带两个参数
Point(int xx, int yy): x(xx), y(yy) {}
//带三个参数,让x和y都乘以第三个参数
Point(int xx, int yy, int multiply): x(xx*multiply), y(yy*multiply) {}
}
void testConstructors() {
Point point1; //不带任何参数,x,y都是0
Point point2(123); //只带一个参数,x是123,y是0
Point point3(123, 456); //带两个参数,x=123, y=456
Point point4(123, 321, 3); //带三个参数,x=369, y=963
//同样的可以应用到new的情况:
Point *p1 = new Point();
Point *p2 = new Point(123);
Point *p3 = new Point(123, 456);
Point *p4 = new Point(123, 321, 3);
delete p1;
delete p2;
delete p3;
delete p4;
}
对于第三种,想定义什么样的构造函数,完全取决于你自己。怎么方便怎么来。
方式很多吗?不管用什么函数封装,或者使用工厂模式,其实本质就三这种。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |