C++ 类——使用公共(public)变量并在类外定义成员函数

标签 c++ class oop

我定义了一个 C 类。我想将所有成员函数写入一个名为 C.cpp 的文件中,我知道该怎么做。我不知道的是:

  1. 如何在 main 中定义一个函数 f?我试过:

    C::f(arguments){
    /*function definition*/}
    
    int main(){ /*code in main*/
    }
    
  2. 如何在定义类 C 的对象 P 后访问和更改 main 中的公共(public)成员变量“x”,而无需为此定义显式函数?我想做类似的事情

    P.x = 5.67;
    

最佳答案

对于1.,如果f没有在类C中声明(即在C.h中) ), 你不能。您不能向类动态添加函数。

此外,如果 is 在 C.h 中声明并且还在 C.cpp 中定义,那么您将尝试复制其定义,但您也不能这样做。

如果它在 C.h 中声明但未在 C.cpp 中定义,您可以在主文件中的此处定义它,但不推荐这样做(不良做法) .最好将所有类的方法定义放在它的 .cpp 文件中。

对于 2,如果该成员是在类的 public 部分中声明的,则可以修改类 C 的对象的属性:

class C {
... // private members
public: // public section
    double x;
    ... // other public members, methods or attributes
};

在这种情况下,您可以在 main 中:

C P;
P.x = 5.67;

关于C++ 类——使用公共(public)变量并在类外定义成员函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41647267/

相关文章:

c++ - 在 C++ 中返回后更改返回指针

c++ - Visual C++ 在函数末尾附加 0xCC (int3) 字节

c++ - 编译器不识别实现文件中的类成员函数类型,但在接口(interface)文件中识别

java - 使用 Class<?> 而不是 Class 作为方法参数类型有什么好处?

java - 如何在Java中创建某种对象类型的List?

c++ - 关于删除 boost multiindex 的迭代器

c++ - Atan2 表 C++

java - 使用覆盖方法

c# - 更好地使用构造函数或方法工厂模式?

oop - 依赖注入(inject)容器 - 工厂模式