c 中運算子過載遇到的問題

2021-08-24 21:51:31 字數 857 閱讀 4584

h:\test\complex2.h(23) : fatal error c1001: internal compiler error

(compiler file 'msc1.cpp', line 1786)

please choose the technical support command on the visual c++

help menu, or open the technical support help file for more information

error executing cl.exe.

test.exe - 1 error(s), 0 warning(s)

剛才上機遇到這個問題,急得我要死。

到網上搜了一下與運算子過載有關。出錯的是這句話:using namespace std;

在標頭檔案裡注釋掉這句,但是保留#include

ok!!!

將#include 改為#includeh> ,也ok!!!

這有解答

造成這種問題的原因是編譯器分配的記憶體超過了限制。

解決的辦法有三種

1.給編譯器增大記憶體限制。在project(工程)->setting(設定)->c/c++的project option(工程選項)中,新增/zm#nn選項,#nn是乙個數字,取值最大為2000。預設為100。但是這種方法好像沒有什麼用處。

2.將模板類標頭檔案從stdafx.h中移出;

3.不使用預編譯標頭檔案。project->setting->c/c++,選擇所有的.cpp檔案,都使用「不使用預編譯標頭檔案「的選項。缺點是編譯的時候很慢

C 中運算子過載

運算子過載使得使用者自定義的資料以一種更簡潔的方式工作。比如int x,y 可以為y x y 而 my c1,c2 如果想使得兩個自定義的物件相加,以前只能調 用函式計算它們的和。而現在只要定義了運算子過載就能實現c1 c1 c2.所謂過載,就是重新賦予新的含義。函式過載就是對乙個已有的函式賦予新的...

C 中運算子過載

運算子過載可以寫在類的內部,也可以寫成全域性函式形式,其中運算子 在過載時必須宣告為類的成員函式 而運算子 sizeof 不能被過載 演算法運算子的過載不會改變運算子原有的優先順序。例子 include include include using namespace std class comple...

C 中的運算子過載(一) 運算子過載的概念

概述 運算子過載,就是對已有的運算子重新進行定義,賦予其另一種功能,以適應不同的資料型別。運算子過載 operator overloading 只是一種 語法上的方便 也就是它只是另一種函式呼叫的方式,只是為了方便我們使用,運算子只能運算內建的資料型別,對於自定義的資料型別不能運算,所以我們可以過載...