gpt4 book ai didi

.cpp 中的 C++ 类方法调用没有::

转载 作者:行者123 更新时间:2023-11-28 02:00:51 28 4
gpt4 key购买 nike

我是 C++ 编程新手。我有很好的 Java 背景,但 C++ 在很多方面都不同,我对其中一个 .h 和 .cpp 文件有疑问。

对于具有 x 和 y 位置的点对象,我有以下文件:

点.h

#ifndef POINT_H_
#define POINT_H_

class Point{
Point();
Point(int newX, int newY);

public:
int getX();
int getY();
void setX(int newX);
void setY(int newY);
void moveBy(int moveX, int moveY);
Point reverse();
private:
int x;
int y;
};
#endif

点.cpp

#include "Point.h"

using namespace Point;

Point::Point(int newX, int newY){
x = newX;
y = newY;
}
int Point::getX(){
return x;
}
int Point::getY(){
return y;
}
void Point::setX(int newX){
x = newX;
}
void Point::setY(int newY){
y = newY;
}
void Point::moveBy(int moveX, int moveY){
x += moveX;
y += moveY;
}
Point Point::reverse(){
return Point(y,x);
}

我想知道是否有一种方法可以通过使用命名空间来避免 Point::Point 部分,就像 std::cout 一样。

谢谢

最佳答案

不需要将您的声明和定义分开,而且这些函数非常微不足道。因此,将它们包含在类定义中实际上可能允许编译器执行许多额外的优化。

因此您可以完全丢弃 .cpp, header 变为:

#ifndef POINT_H_
#define POINT_H_

class Point
{
int x_ { 0 };
int y_ { 0 };

public:
Point() = default;
Point(int x, int y) : x_(x), y_(y) {}

int getX() const { return x_; }
int getY() const { return y_; }
void setX(int x) { x_ = x; }
void setY(int y) { y_ = y; }
void moveBy(int x, int y) { x_ += x, y_ += y; }
Point reverse() const { return Point(y_, x_); }
};

#endif

但是在类声明之外定义成员时,您无法避免“Point::”部分。

关于.cpp 中的 C++ 类方法调用没有::,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39626903/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com