2011-04-15 63 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 {。這是不對的:你開始了一個聲明,但你從來沒有給你聲明的內容命名。