【问题标题】:C++ public method definitions after class definition?类定义后的C++公共方法定义?
【发布时间】:2014-02-07 03:01:54
【问题描述】:
class Car {

    private:
      int doors;

    public: 
      void print();
      Car();
      Car(int doors);
 };


 Car :: Car (int doors) 
 {
     doors = doors;
 }

这是 C++ 中类定义的正确语法吗?

为什么要在类定义之外声明方法(在我看到的示例中)?

:: 语法的真正含义是什么?

【问题讨论】:

  • 1.是 2. 从标题中删除类实现 3. 查找“范围解析运算符”。
  • 2.出于同样的原因,C 中的函数通常在头文件中声明,但在 .c 文件中单独定义(但请注意,成员函数在类定义中 declareddefined 在它之外)。
  • 3.谢谢,很好的答案

标签: c++ oop variables inheritance


【解决方案1】:

是的。它是有效的。

方法不在外部“声明”。它们在外部“定义”以使声明和定义分开。您已将声明包含在您的班级中,说明了他们的成员资格。您也可以在其中包含大多数定义。但是,类实现通常在单独的实现文件中完成。

:: 被称为范围解析运算符。 “Car :: Car (int door)”表示“来自 Car 类的构造函数 Car,它带有一个 int 参数”

编辑:只是添加,范围解析运算符标识工件(在您的示例中,构造函数)属于哪个范围(在您的示例中,哪个类)。

【讨论】:

  • 谢谢,很好的答案。这是一个明显的问题(我希望),我想确认一下,但是您是否能够调用具有相同名称的各种构造函数并使用范围解析运算符和差异类名称来定义它们?
  • @user:构造函数必须与类同名,因此不能在两个不同的类下定义两个“同名”的构造函数。一个类可能有多个重载的同名构造函数,但参数不同。但如果是针对任何其他函数,是的,您可以使用范围解析运算符在同一文件中的不同类下定义具有相同名称的函数。如果这些函数是静态的,您甚至可以使用范围解析运算符单独调用它们。
  • 好吧,是的,这就是我的意思,除了构造函数之外的其他函数。感谢您的详尽回答。
猜你喜欢
  • 1970-01-01
  • 2012-06-06
  • 1970-01-01
  • 2019-04-06
  • 2021-08-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多