2011-04-15 64 views
-1

如果我有一个.h文件,其中包含例如以下:C++ - 的.h和.cpp

class A 
{ 
... 
} 

注意,没有个性的构造在这里。

现在,在.cpp文件,我可以写:

A 
{ 
... 
} 

换句话说,它是确定使用构造类的名称,具体如下?

A::A() 
{ 
... 
} 

谢谢。

+0

更好的问题:) – sarnold 2011-04-15 09:09:25

+0

你打算在'A {...}'中写什么?这不是一个有效的synatx。 – Naveen 2011-04-15 09:10:09

+0

'A {...}'无效,只要它是一个意外的有效宏! – iammilind 2011-04-15 09:18:58

回答

-3

是您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; }

+3

我很好奇你是如何解释这个问题的,因为答案是肯定的。按照我的理解,这非常“不”。 – ildjarn 2011-04-15 09:38:27

+1

这甚至没有*关闭*的答案。你至少需要解释一下为什么*答案是肯定的。 – 2011-04-15 10:04:22

+0

@Cody和ildjam:请根据我对问题的解释找到代码。 – Arunmu 2011-04-15 12:16:03

2

我相信回答你的问题是“否”。但这是一个令人困惑的问题。您为.cpp文件的内容建议的语法证明是不可编译的。

3

如果你的问题是你是否能使用A {}定义构造函数,不,你需要使用A :: A(){...}语法构造函数,如果你是在定义它cpp文件。

如果你问,如果你并不需要一个构造函数,不,你不一定需要一个,编译器将使用默认提供给您。

我应该说,如果你是在类定义做的构造函数,你可以使用A(){...},如

class A 
{ 
public: 
    A(){} 
}; 
0

是确定不是在类名后面使用构造

如类变得更长和更复杂的混合定义和t他的实施细节使得班级更难以管理和使用。

传统上,类定义放在与类相同名称的头文件中,而定义在类外部的成员函数放在与类相同名称的.cpp文件中。一旦你定义A类像

0

号,编译器期望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 {。这是不对的:你开始了一个声明,但你从来没有给你声明的内容命名。