如果我有一個.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