C++ 關於“不允許使用資料成員初始值設定”的問題
這應該算是C++11新標準的一個重大的改動了!建議使用VS2015使用新標準!
C++11 之前的標準是不允許在類內初始化非靜態資料成員的,只有靜態常量整型資料成員,才可以在類中初始化。具體原因可以看下列原因(舊版):
(1)類只是一個抽象型別,並不是實體的東西,利用這個抽象型別會例項化成不同的個體,每個個體的特徵(資料成員)都不一樣,如果在類定義中將特徵初始化了,豈不是破壞了抽象性,做了一個面向都一樣的模子?
(2)類的定義實際相當與型別宣告,並沒有分配儲存空間,初始化的資料哪裡放? 類例項化以後才會有實體儲存地址及空間。
當時認為,類定義中的資料定義,是一種宣告,不是資料定義,當用類 定義物件(變數,常量)時候,才開始定義資料。
關於靜態成員:
靜態常量整型資料成員—static關鍵字:1)不是物件的一部分
2)可以產生常量表達式,所以可以在類中初始化。
靜態常量整型資料成員,能夠用來當作常量表達式使用,不在內部定義的話,則該常量表達式未定義,就不能使用了。C++11 非靜態成員變數(常量),可以直接初始化,或者在初始化表中初始化。
C++11 中 初始化非靜態成員變數(常量),可以看作賦給變數(常量)一個預設值。
相關推薦
C++ 關於“不允許使用資料成員初始值設定”的問題
這應該算是C++11新標準的一個重大的改動了!建議使用VS2015使用新標準! C++11 之前的標準是不允許在類內初始化非靜態資料成員的,只有靜態常量整型資料成員,才可以在類中初始化。具體原因可以
關於C++ 類資料成員初始化的一點總結【為什麼類定義中不能初始化成員變數】
往往被初學者忽視的是,C++類中的資料初始化是有講究的, 一般需要遵循以下幾條約束: 1.一般而言,類裡面的任何成員變數在定義時是不能初始化的。 【為什麼???】 這是一個可以值得探討的話題,每個人的解釋都不一樣,大部分人都認為這是編譯語法
C# 出現System.TypeInitializationException類型初始值設定項引發異常
log pan blog body 提示 不同 pos conf system 描述:提示在DAL.SQLHepler出現該異常。 解決:connectionString寫在AppConfig裏面,但是在引用的時候寫錯name。註意ConnectionStrings["XX
C++模板類中靜態資料成員初始化
首先看程式碼,靜態資料成員分為兩種情況,第一種不依賴模版型別引數,第二種依賴模版型別引數。 template <typename T> class TestTemStatic{ public: static int knownTypeV
C++類的靜態成員& 賦值vs初始化
C++靜態成員是類的行為而不是物件的行為 C++靜態成員的用途之一是統計有多少個物件實際存在 靜態成員的初始化:在類的外面 形式: 資料型別類名::靜態資料成員名=初值 賦值操作是在兩個已經存在的物件間進行的,而初始化是要建立一個新的物件,並且其初值來源
C++11中類資料成員初始化方法詳解
C++98為類中提供類成員的初始化列表。 類物件的構造順序是這樣的:1.分配記憶體,呼叫建構函式時,隱式/顯示的初始化各資料成員 2.進入建構函式後在建構函式中執行一般計算 1.類裡面的任何成員變數在定義時是不能初始化的。 2.一般的資料成員可以在建構函式中初始化。 3.const資料成員必須在
c++ 用引數初始化列表對資料成員初始化
除了使用建構函式可以對類中的成員變數進行初始化,還可以使用引數初始化列表。這種方法不在函式體內對資料成員初始化,而是在函式首部實現。這樣可以減少函式體的長度。 舉例如下: #include<string> using namespace std; class S
C#中異常:“The type initializer to throw an exception(型別初始值設定項引發異常)”的簡單分析與解決方法
對於C#中異常:“The type initializer to throw an exception(型別初始值設定項引發異常)”的簡單分析,目前本人分析兩種情況,如下: 情況一: 其實麒麟.NET的這篇文章主要講解分析了靜態成員的方面,總的說就是:型別初始化或訪問
【Excel】統計不重複資料的個數,設定單元格不允許出現重複資料
前篇文章我們介紹了一下Excel中如何設定資料有效性以及COUNTIF函式的用法,這篇文章主要介紹有重複資料時如何統計不重複資料的個數以及通過資料有效性去設定單元格不允許出現重複資料。 統計單列不重複的個數 如下圖所示,要統計B列資料的不重複個數,也就是通過、不適用、未測
GDAL C# “OSGeo.GDAL.GdalPINVOKE”的型別初始值設定項引發異常 解決方法
在使用C#版本的GDAL開發的時候,編譯正常,啟動的時候就會提示:“OSGeo.GDAL.GdalPINVOKE”的型別初始值設定項引發異常。“ 對於這個問題,原因主要就是沒有找到dll導致的,在使用的時候不但要把C#的那八個dll拷貝到exe所在目錄
類型初始值設定項引發異常的解決方法
實例 nbsp fig str winform 引用 setting .config orm 1、檢查類中的靜態字段或屬性,確保其能夠正常的完成初始化 2、在類的構造函數中,確保其訪問的屬性或字段都已經完成初始化 3、如果是WinForm中,將訪問的窗體控件的語句寫在初始化
“Microsoft.SqlServer.Management.Dmf.PolicyStore”的理性初始值設定項引發異常.
man pro 設定 sqlserver sql trace soft sof rac SQLServer2008 錯誤:“Microsoft.SqlServer.Management.Dmf.PolicyStore”的理性初始值設定項引發異常。 解決辦法: 下載Mic
Net使用RdKafka引發異常RdKafka.Internal.LibRdKafka 的類型初始值設定項引發異常
edi 異常 lib internal not .lib tail except asp 在Net中VS2015用RdKafka組件開發消息發布和消費,引發下面的異常 RdKafka.Internal.LibRdKafka 的類型初始值設定項引發異常System.Type
Emgu.CV.CvInvoke的類型初始值設定項引發異常
到你 兩個 環境變量 設定 c盤 添加 文件夾 安裝 可能 被這個問題蛋疼了一個下午,終於解決了。我的服務器出現這個問題的原因:可能是沒有安裝emgucv。 解決方法: 1.下載並安裝emgucv 下載地址:鏈接: https://pan.baidu.com/s/1slyW
“SAP.Middleware.Connector.RfcDestinationManager”的類型初始值設定項引發異常
ram 針對 href dll true 報錯 strong startup https 在VS2015中使用SAP Connector 3.0(SapNco)的.net4.0x86版本開發時,程序運行到RfcDestinationManager.TryGetDestina
MathWorks.MATLAB.NET.Arrays.MWArray”的類型初始值設定項引發異常 解決方法
dll clas 設定 nbsp war work works body 重新安裝 原因 用的是matlab7運行時,後面又安裝了matlab11,後面又重新安裝了matlab7運行時,c盤下就有二個運行時的版本了,程序引用了後面的那個,編譯後就出上面的問題 解決方法
修改machine.config遇到System.Net.ServicePointManager 的類型初始值設定項引發異常
之間 遇到 -- web spa system int conf 應該 <system.net>節點應該在</configuration>上面添加,即config頁尾。 而不是在<configuration> 後面添加。
“SYSTEM.DATA.SQLCLIENT.SQLCONNECTION”的類型初始值設定項引發異常---解決方案
conf mach med microsoft fault .sql def nec -s “System.Data.SqlClient.SqlConnection”的類型初始值設定項引發異常 問題出在了 .net 的C:\WINDOWS\Microsoft.NET\F
有關C++類中資料成員變數定義的一些想法
最近開始學習C++,以前是學C的,對C++新生的類不是很懂,最近在看一些教程,發現有的教程只是簡單的告訴你什麼是類,還有怎麼使用類,但對於類的標準啥的並沒有進行標準化的介紹。 關於C++類中成員變數的定義,一般都是推薦這樣定義: 1.類中的屬性(不是函式)最好定義標準化,並且取名字能讓其
"<Module>"的型別初始值設定項引發異常
"< Module >"的型別初始值設定項引發異常 1、今天電腦開機系統自動升級之後,發現開啟VS2012就會出現該問題。 2、使用VS2012修復之後,問題沒有解決。 3、重新安裝VS2012還是不行,很是納悶。 4、將 .NET formwork4.5 和 4.6.2解