在C++中explicit關鍵字

在C++中explicit作用:explicit關鍵字用來修飾類的建構函式,被修飾的建構函式的類,不能發生相應的隱式類型轉換,只能以顯示的方式進行類型轉換。explicit使用注意事項:*explicit 關鍵字只能用於類內部的建構函式聲明上。*explicit 關鍵字作用於單個參數的建構函式。* 在C++中,explicit關鍵字用來修飾類的建構函式,被修飾的建構函式的類,不能發生相應的隱式類型轉換 如下面所示: class MyClass{public:MyClass( int num );

為什麼C++中千萬不要返回局部對象或變數的引用和指標

大家都知道一個常識:“C++中千萬不要返回局部對象或變數的引用和指標”。既然所有C++權威的書上都要求“一定不要返回局部對象或變數的引用和指標”,那為什麼C++編譯器不從文法上直接禁掉這種用法。如果只是建議的話,那麼“返回局部對象或變數的引用和指標”是否有用武之地呢?(從理論上來講,我認為這種做法似乎總是錯誤的,原因大家都知道。)例1:class CComplex{public:         CComplex():real(0),image(0){}        

C++基礎2

衍生類別與繼承保護成員可以被衍生類別的成員函數訪問,但是對於外界是隱藏起來的,外部函數不能訪問它。 建立衍生類別對象時,首先執行基類的建構函式,隨後再執行衍生類別的建構函式;當撤銷衍生類別對象時,則先執行衍生類別的解構函式,隨後再執行基類的解構函式。 當基類含有帶參數的建構函式,衍生類別必須定義建構函式。如果衍生類別的基類也是一個衍生類別,則每個衍生類別只需負責其直接基類的構造,依次上溯。 虛基類解決二義性。如果一個衍生類別是從多個基類派生出來的,而這些基類又有一個共同的基類,則在這個衍生類別中

C++基礎4

模版 函數模版聲明template<class T>T max(T X,T Y){  return (x>y)?x:y;} 注意:執行個體化T的各模版實參之間必須保持完全一致的類型 模版類定義template<class Type>class stack{void push(Type ch);Type pop();} 類外定義push poptemplate<class Type>void stack<Type>::push(Type ob)

C++全域變數和局部變數

在討論全域變數之前我們先要明白幾個基本的概念:1. 編譯單元(模組):    在IDE開發工具大行其道的今天,對於編譯的一些概念很多人已經不再清楚了,很多程式員最怕的就是處理串連錯誤(LINK ERROR),

C相關筆試題或者面試題中的概念以及技巧題2

對於一個空類,編譯器預設產生4個成員函數:預設建構函式、解構函式、拷貝建構函式、賦值函數。 malloc使用時最好帶上記憶體檢測if((h=(stud *)malloc(sizeof(stud)))==NULL)

關鍵字 mutable (c++)

關鍵字 mutable 是一個奇怪的修飾符(specifier),它只能夠用於一個類的非待用資料成員。下面我將討論 mutable 的語義和用法,但是首先我要解釋一下 C++ 物件模型的一個關鍵概念。對象的狀態    一個對象的狀態由其非待用資料成員的值構成,因此,修改一個資料成員將會改變整個對象的狀態。將一個成員函式宣告為 const 能夠保證它不會改變對象的狀態。   

osg源碼中的ref_ptr operator unspecified_bool_type() 指向類資料成員的指標&類轉化為另一類型(如自訂的C類轉化為int)

template< class T>class A{public: typedef T A::*unspecified_bool_type;//另一類型,指向T的指標,但該類型是屬於A的,聲明時要加A<int>::,訪問時應加a..   operator unspecified_bool_type() const  {   m_p= 3;    return &A::m_p;//一定要用A:: } public: T m_p;};A< int>

C++學習連結

譚浩強C語言http://www.codeguru.cn/cpp/TanHaoQiangC 十部演算法經典著作 合集http://www.codeguru.cn/cpp/10book 二級試題全集http://www.codeguru.cn/cpp/2JiCShiTiJi 高品質C++/C編程指南http://www.codeguru.cn/cpp/AdvanceC++-CProgramGuide

如何用c++開發3ds max外掛程式

建立一個空的工程 我們首先在3DS Max建立面板裡面建立一個簡單的幾何物體,稱之為”widget” 。可以通過視圖視窗裡三個參數去修改它的幾何特性。Size表示輪廓尺寸,第二個參數left表示物體左翼的外延,第三個參數right表示右翼的外延。 首先我們去瞭解一下怎樣建立一個工程,可以通過以下兩種方法: 1. Using the Appwizards 2. Manually 某些外掛程式程式只能通過手動建立。 簡便起見,只介紹第一種方法。 Using the

C#錯誤號碼說明(一)

錯誤 CS0001 編譯器內部錯誤 錯誤 CS0003 記憶體溢出 錯誤 CS0004 提升為錯誤的警告 錯誤 CS0005 編譯器選項後應跟正確的參數 錯誤 CS0006 找不到動態連結的中繼資料檔案 錯誤 CS0007 .Net 環境初始化錯誤 錯誤 CS0008 從檔案中讀取中繼資料錯誤 錯誤 CS0009 不能開啟中繼資料檔案 錯誤 CS0010 名字空間與類型的聲名不能同名 錯誤 CS0011 引用的類找不到基類 錯誤 CS0012 找不到參考型別的定義

C++編程規範 4 類

4 類   4.1  類的設計 類是物件導向設計的基礎,一個好的類應該職責單一,介面清晰、少而完備,類間低耦合、類內高內 聚,並且很好地展現封裝、繼承、多態、模組化等特性。 原則4.1 類職責單一 說明:類應該職責單一。如果一個類的職責過多,往往難以設計、實現、使用、維護。 隨著功能的擴充,類的職責範圍自然也擴大,但職責不應該發散。 用小類代替巨類。小類更易於編寫,測試,使用和維護。用小類體現簡單設計的概念;巨類會削弱封

C++ 編程規範 1 常量

1 常量 不變的值更易於理解、跟蹤和分析,所以應該儘可能地使用常量代替變數,定義值的時候,應該把const 作為預設的選項。 規則1.1 使用const常量取代宏 說明:宏是簡單的文本替換,在預先處理階段時完成,運行報錯時直接報相應的值;跟蹤調試時也是顯 示值,而不是宏名;宏沒有類型檢查,不安全;宏沒有範圍。 樣本:     #define MAX_MSISDN_LEN (20)  //不好的例子     const int MAX_MSISDN_LEN = 20; //好的例子 規則1.2

C++編程規範 9 程式效率

9 程式效率   9.1  C++語言特性的效能分級 影響軟體效能的因素眾多,包括軟體架構、運行平台(作業系統/編譯器/硬體平台)等。很多時候,程 序的效能在架構設計完成時就已經確定了。因此當一個程式的效能需要提高時,首先需要做的是用性 能偵查工具對其啟動並執行時間分布進行一個準確的測量,找出關鍵路徑和真正的瓶頸所在,然後針對瓶 頸進行分析和最佳化,而不是一味盲目地將效能低劣歸咎於所採用的語言。事實上,如果架構設計不做 修改,即使用C語言或者組合語言重新改寫,也並不能保證提高總體效能。

C++編程規範 2 初始化和類型轉換

2 初始化和類型轉換   2.1  聲明、定義與初始化 規則2.1 禁止用memcpy、memset初始化非POD對象 說明:POD 全稱是“Plain Old Data”,是C++ 98標準(ISO/IEC 14882, first edition, 1998-09-01)中引入的一個概念, POD類型主要包括int, char, float,double,enumeration,void,指標等原始

C++編程規範 10並發

10並發 規則10.1 多線程、進程並行訪問共用資源時,一定要加鎖保護 說明:共用資源包括全域變數,靜態變數,共用記憶體,檔案等。 建議封裝像智能指標一樣的對象對鎖進行管理,比如我們就封裝了一個auto_lock,在構造時申請 鎖,析構中釋放鎖,保證不會忘記“解鎖”。如果鎖的作用範圍有限,則可以這樣: do {    auto_lock lock(&lock);    //.... }while(0); 規則10.2 鎖的職責單一

C++編程規範 3 函數

3 函數   3.1  內嵌函式 規則3.1 內嵌函式(inline function)小於10行 說明:內嵌函式具有一般函數的特性,它與一般函數不同之處只在於函數調用的處理。一般函數進行 調用時,要將程式執行權轉到被調用函數中,然後再返回到調用它的函數中;而內嵌函式在調用時, 是將調用運算式用內嵌函式體來替換。 內嵌函式只適合於只有1~10行的小函數。對一個含有許多語句的大函數,函數調用和返回的開銷相對 來說微不足道,也沒有必要用內嵌函式實現,一般的編譯器會放棄內聯方式,而採用普通的方式調用

C++編程規範 11風格

11風格   11.1 標示符命名與定義 建議11.1 類命名以大寫字母開頭,中間單詞也以大寫開頭 樣本:     class UrlTable;     class UrlTableProperties;   11.2 排版 建議11.2 類的聲明按照一定的次序進行,關鍵字不縮排 說明:類的聲明按照一定的次序和規範進行。建議的次序如下: 按照存取控制特性段排序:public、protected、private,如果沒有可以忽略。這個排序是讓聲    

__declspec(dllexport),extern “c”與.def檔案

 __declspec(dllexport)與.def檔案在VC++中,如果產生DLL可以不使用.def檔案。只需要在VC++的函數定義前要加__declspec(dllexport)修飾就可以了。但是使用__declspec(dllexport)和使用.def檔案是有區別的。如果DLL是提供給VC++使用者使用的,只需要把編譯DLL時產生的.lib提供給使用者,它可以很輕鬆地調用你的DLL。但是如果DLL是供VB、PB、Delphi使用者使用的,那麼會產生一個小麻煩。因為VC++對於__dec

C++中的new還可以這樣

    今天知道了<new>這個標頭檔,而且new還可以這樣:使用new不分配記憶體空間,只調用建構函式,如下代碼#include <iostream>#include <new>class CMyClass{public:CMyClass(){ std::cout << "here i am " << std::endl; }};int main(int, char**){CMyClass *c = new((void*)100)

總頁數: 4314 1 .... 2474 2475 2476 2477 2478 .... 4314 Go to: 前往

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.