❶ c++中類中聲明一個方法但未實現為什麼能編譯通過
#ifndefATEMPLE_H_
#defineATEMPLE_H_
classmTemp
{
public:
mTemp(int_x);
~mTemp(){};
voidshowData()const;
voidtoDo();
private:
intx;
};
#endif
//cpp
#include"stdafx.h"
#include"ATemple.h"
#include<iostream>
usingstd::cout;
mTemp::mTemp(int_x)
{
x=_x;
}
voidmTemp::showData()const
{
cout<<"data:"<<x<<" ";
}
//main.cpp
int_tmain(intargc,_TCHAR*argv[])
{
intss=10;
mTemp_m(ss);
_m.showData();
return0;
}
//這是允許的,譬如把operator=和constructor聲明為私有但不實現,防止一些非法拷貝動作.
❷ C語言:我編了一個程序,為什麼編譯時沒錯,但運行時出現出現下列情況,求高手解答。
是output/sort/avgstd這幾個函數沒找到,你應該包含這幾個函數所在的函數庫。
1. 包含頭文件
2. 編譯的時候連接相應的鏈接庫(可能不需要,包含頭文件就可以了,編譯器會自己找)
❸ 若一個函數聲明了,但沒用到,編譯器在哪個階段會報錯
聲明過後沒用到是不會報錯的,除非函數聲明部分就有問題
❹ error LNK2001:unresolved external symbol "void __cdecl display(char * const)" (display@@YAXQAD@Z)
"void display(char str[M]) //你的dispaly拼寫錯
❺ 請問這個vc6報錯是什麼原因error C2447: missing function header (old-style formal list)
好幾個問題:
一:
int WINAPI WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow);
不該有分號。
二:
LRESULT CALLBACK WinSunProc(
HWND hwnd, // handle to window
UINT uMsg, // message identifier
WPARAM wParam, // first message parameter
LPARAM lParam // second message parameter
);
只有聲明,沒有實現。
三:
如果你的程序建的是控制台而非win32程序,請如下修改設置(編譯環境為VC6):
1.進入project->setting->c/c++, 在category中選擇preprocessor,在processor definitions中刪除_CONSOLE, 添加_WINDOWS
2.進入project->setting->Link, 在Project options中將 /subsystem:console改為/subsystem:windows.
3.保存設置,Rebuild All.
❻ 類的有成員函數的聲明但是沒有實現為什麼可以編譯
可以編譯,但鏈接會出錯,因為這不是編譯要檢查的問題
❼ C++中,只是聲明一個函數而不定義,編譯時會不會產生與之相對應的命令代碼
不會產生代碼,也不會出錯。就算語言規定默認定義的構造函數如果不使用不會產生代碼的。
❽ Visual Studio 編譯失敗
應該是因為只有聲明沒有實現,把實現寫上去就沒事了,你把滑鼠移到波浪線上面就知道為什麼錯了
❾ 沒有實體 只有聲明的函數會怎麼執行
外部函數extern時聲明這個函數為外部函數,本文件不做定義,只調用,編譯不會出錯,但不能運行(沒有函數實體)。。。。如果想有運行結果就必須將函數實體包含進來,所以文件包含和extern是配合使用的。。。文件包含只需要包含.h就是實體的頭文件,但有些貌似不能識別頭文件和c的關系,所以就只能包含.c文件。。。
也就是說外部函數extern只是個聲明,他告訴編譯器我用到了一個外部函數,但如果該文件沒有將函數實體包含進來,編譯器是找不到的,依然是不能運行的,所以extern只是個聲明,並沒有做任何事,只是這樣是沒用的。。。。
include是包含一個文件,就是類似於該文件復制到此處(只是說類似,其實是個查找路徑,讓編譯器去該路徑查找函數),就這么簡單功能。。。。