这是构造函数吗(C++)
Is this a constructor (C++)
我今天在网上看到这段代码:
#include<iostream>
using namespace std;
class Test
{
private:
int x;
int y;
public:
Test (int x = 0, int y = 0) { this->x = x; this->y = y; }
Test setX(int a) { x = a; return *this; }
Test setY(int b) { y = b; return *this; }
void print() { cout << "x = " << x << " y = " << y << endl; }
};
int main()
{
Test obj1;
obj1.setX(10).setY(20);
obj1.print();
return 0;
}
这里看到这些行:
Test setX(int a) { x = a; return *this; }
Test setY(int b) { y = b; return *this; }
setX 和 setY 是构造函数吗?如果不是,它们是什么?任何帮助将不胜感激。
构造函数将 class 的名称作为方法名称。
你所拥有的被称为 setters。
最setters
returnvoid
.
class只有一个构造函数
Test (int x = 0, int y = 0) { this->x = x; this->y = y; }
这是默认构造函数,因为它可以在没有参数的情况下调用..
构造函数名称与class.name相同。
所以这些
Test setX(int a) { x = a; return *this; }
Test setY(int b) { y = b; return *this; }
是两个 non-static 名为 setX 和 setY 的成员函数,它们有一个 int 类型和 return 类型 Test 的参数。应用函数的对象的函数 return 个副本。
例如这个语句
obj1.setX(10).setY(20);
没有意义,因为调用 setY 被应用到临时对象 return 通过调用 objq.setX( 10 ).
方法的声明至少要像
Test & setX(int a) { x = a; return *this; }
Test & setY(int b) { y = b; return *this; }
如果函数具有 return 类型 Test,则此语句
obj1.setX(10).setY(20);
obj1.print();
产生产出
x = 10 y = 0
如果使用 return 类型 Test 声明函数,则上述语句的输出将为
x = 10 y = 20
下面是constructor
(构造函数意味着class名称和成员函数名称应该相同并且它不应该有任何return类型)
Test (int x = 0, int y = 0) { this->x = x; this->y = y; } /* constructor */
setX
和 setY
是 class 的 普通成员函数 而不是构造函数,因为它们的 return 类型是class-name 不会使它们成为构造函数。
其次,如果 setX
和 setY
是 constructor
,那么您不必像 obj1.setX(10).setY(20);
那样调用,因为每当创建对象时都会自动调用构造函数。
不,他们不是构造函数。
return'this'的方法可以一个接一个地串联起来
例如`a.setX (1).setY (2);
其中 a
是 Test
的实例
我今天在网上看到这段代码:
#include<iostream>
using namespace std;
class Test
{
private:
int x;
int y;
public:
Test (int x = 0, int y = 0) { this->x = x; this->y = y; }
Test setX(int a) { x = a; return *this; }
Test setY(int b) { y = b; return *this; }
void print() { cout << "x = " << x << " y = " << y << endl; }
};
int main()
{
Test obj1;
obj1.setX(10).setY(20);
obj1.print();
return 0;
}
这里看到这些行:
Test setX(int a) { x = a; return *this; }
Test setY(int b) { y = b; return *this; }
setX 和 setY 是构造函数吗?如果不是,它们是什么?任何帮助将不胜感激。
构造函数将 class 的名称作为方法名称。
你所拥有的被称为 setters。
最setters
returnvoid
.
class只有一个构造函数
Test (int x = 0, int y = 0) { this->x = x; this->y = y; }
这是默认构造函数,因为它可以在没有参数的情况下调用..
构造函数名称与class.name相同。
所以这些
Test setX(int a) { x = a; return *this; }
Test setY(int b) { y = b; return *this; }
是两个 non-static 名为 setX 和 setY 的成员函数,它们有一个 int 类型和 return 类型 Test 的参数。应用函数的对象的函数 return 个副本。
例如这个语句
obj1.setX(10).setY(20);
没有意义,因为调用 setY 被应用到临时对象 return 通过调用 objq.setX( 10 ).
方法的声明至少要像
Test & setX(int a) { x = a; return *this; }
Test & setY(int b) { y = b; return *this; }
如果函数具有 return 类型 Test,则此语句
obj1.setX(10).setY(20);
obj1.print();
产生产出
x = 10 y = 0
如果使用 return 类型 Test 声明函数,则上述语句的输出将为
x = 10 y = 20
下面是constructor
(构造函数意味着class名称和成员函数名称应该相同并且它不应该有任何return类型)
Test (int x = 0, int y = 0) { this->x = x; this->y = y; } /* constructor */
setX
和 setY
是 class 的 普通成员函数 而不是构造函数,因为它们的 return 类型是class-name 不会使它们成为构造函数。
其次,如果 setX
和 setY
是 constructor
,那么您不必像 obj1.setX(10).setY(20);
那样调用,因为每当创建对象时都会自动调用构造函数。
不,他们不是构造函数。
return'this'的方法可以一个接一个地串联起来
例如`a.setX (1).setY (2);
其中 a
是 Test