如果我有一个.h
文件,其中包含例如以下:C++ - 的.h和.cpp
class A
{
...
}
注意,没有个性的构造在这里。
现在,在.cpp文件,我可以写:
A
{
...
}
换句话说,它是确定不使用构造类的名称,具体如下?
A::A()
{
...
}
谢谢。
如果我有一个.h
文件,其中包含例如以下:C++ - 的.h和.cpp
class A
{
...
}
注意,没有个性的构造在这里。
现在,在.cpp文件,我可以写:
A
{
...
}
换句话说,它是确定不使用构造类的名称,具体如下?
A::A()
{
...
}
谢谢。
是您Can.If我理解正确你的问题。
头文件
#include < iostream> using namespace std; class A{ public: A(); void func(); };
CPP文件
#include "h.hpp"using namespace std;
A::A(){cout << "Constructor" << endl;}int main(){ A a; return 0; }
我相信回答你的问题是“否”。但这是一个令人困惑的问题。您为.cpp文件的内容建议的语法证明是不可编译的。
如果你的问题是你是否能使用A {}定义构造函数,不,你需要使用A :: A(){...}语法构造函数,如果你是在定义它cpp文件。
如果你问,如果你并不需要一个构造函数,不,你不一定需要一个,编译器将使用默认提供给您。
我应该说,如果你是在类定义做的构造函数,你可以使用A(){...},如
class A
{
public:
A(){}
};
是确定不是在类名后面使用构造
如类变得更长和更复杂的混合定义和t他的实施细节使得班级更难以管理和使用。
传统上,类定义放在与类相同名称的头文件中,而定义在类外部的成员函数放在与类相同名称的.cpp文件中。一旦你定义A类像
号,编译器期望A
开始的
A MyObject;
A MyOtherObject = { /* initial values */ }; // C style since there's no ctor
A MyFunction();
A MyFunction() { return MyObject; }
或者是像
A* MyPointer;
A& MyReferemce = MyObject;
正如你所看到的变化之一,编译器期望你在A
之后声明一些东西。但你有A {
。这是不对的:你开始了一个声明,但你从来没有给你声明的内容命名。
更好的问题:) – sarnold 2011-04-15 09:09:25
你打算在'A {...}'中写什么?这不是一个有效的synatx。 – Naveen 2011-04-15 09:10:09
'A {...}'无效,只要它是一个意外的有效宏! – iammilind 2011-04-15 09:18:58