1. 程式人生 > >C++一些細節

C++一些細節

/*#include<iostream>
#include"pthread.h"

using namespace std;

static pthread_mutex_t* mutex;
class Single;

class Single
{
private:
    Single() {};
public:
    static Single* instance;
    static Single* getInstance()
    {
        if (instance == NULL)
        {
            pthread_mutex_lock(mutex);
            if
(instance == NULL) { instance = new Single(); } pthread_mutex_unlock(mutex); } else { cout << "資源已被佔用" << endl; } return instance; } void display() { cout << "單例模式"
<< endl; } }; Single* Single::instance = NULL; int main() { pthread_mutex_init(mutex, NULL); Single* sing = Single::getInstance(); sing->display(); Single* s = Single::getInstance(); s->display(); system("pause"); } class Parent { public: virtual void
foo1(){} virtual void foo2(){} virtual foo3(); }; class Child1 :public Parent { public: void foo1(){} void foo3(); }; class Child2 :public Parent { void foo1(){} void foo2(){} void foo3(); }; 虛擬函式表的相關概念,定義的三個類中三個函式的記憶體地址是不同的,表現除了虛擬函式具有多型性和繼承性的特點。 */ /* //建構函式呼叫虛擬函式 #include<iostream> using namespace std; class A { A() { doSth(); } virtual void doSth() { printf("I an A"); } }; class B :public A { public: virtual void doSth() { printf("I am B"); } }; int main() { A c; system("pause"); } */ /* #include<iostream> #include<string> using namespace std; class Test { public: char* buf; Test(void) { buf = NULL; } Test(const char* str) { buf = new char[strlen(str) + 1]; strcpy(buf, str); } Test(Test& test) //如果不新增此複製建構函式,t1的buf和t2的buf指向相同的堆記憶體,為淺複製,加入此複製建構函式,為物件創造了新的記憶體,指向不同的地址。 { buf = new char[strlen(test.buf) + 1]; strcpy(buf, test.buf); } ~Test() { if (buf != NULL) { delete buf; buf = NULL; } } }; int main() { Test t1("hello"); Test t2 = t1; cout << "(t1.buf==t2.buf)?" << (t1.buf == t2.buf) ? "yes" : "no"; system("pause"); } */ /* #include<iostream> using namespace std; class Base { int i; public: Base() :i(0) { cout << "Base()" << endl; } Base(int n) :i(n) { cout << "Base(int)" << endl; } Base(const Base& b) :i(b.i) { cout << "Base(Base&)" << endl; } }; class Derverd :public Base { int j; public: Derverd() :Base(0), j(0) { cout << "Deriverd()" << endl; } Derverd(int m, int n) :Base(m), j(0) { cout << "Derverd(int)" << endl; } Derverd(Derverd &obj) :Base(obj), j(obj.j) { cout << "Deriverd(Deriverd&)" << endl; } }; int main() { Base b(1); Derverd obj(2, 3); Derverd d = obj; system("pause"); } */

相關推薦

C++一些細節

/*#include<iostream> #include"pthread.h" using namespace std; static pthread_mutex_t* mutex; class Single; class Single {

C#中關於WebBrowser的一些細節設置

res 處理 logs window 人的 toolbar 基本 快捷 eww 在winform中有一個控件可以顯示html的內容,該控件就是webbrowser,設置它的DocumenText屬性為HTML的內容即可。 在使用WebBrowser做UI的時候,我們

一些細節C++黑科技,模板)

priority_queue 最常用的當然是在dij的時候. #include <queue> struct node { int x, dis; bool operator < (const node a) const { return a

C---檔案操作的一些細節問題

C語言中對檔案進行操作必須開啟檔案,開啟檔案主要涉及到fopen函式。 fopen函式的原型為: FILE* fopen(const char *path,const char *mode) 其中path為檔案路徑,mode為開啟方式 1)對於檔案路徑,只需注意若未明確

關於C++在編碼時的一些細節

函式不能依賴於filescope物件,否則會造成重用困難 預設引數右側的引數也必須為預設 定義(函式定義,類定義)只能有一個,否則編譯時沒有問題,link時報有多個定義 宣告 (變數,函式名)只能有一個,否則編譯時會報symbol redefine inline是在編

C++類中的一些細節(過載、重寫、覆蓋、隱藏,建構函式、解構函式、拷貝建構函式、賦值函式在繼承時的一些問題)

1 函式的過載、重寫(重定義)、函式覆蓋及隱藏 其實函式過載與函式重寫、函式覆蓋和函式隱藏不是一個層面上的概念。前者是同一個類內,或者同一個函式作用域內,同名不同引數列表的函式之間的關係。而後三者是基類和派生類函式不同情況下的關係。 1.1 函式過載

getchar()函式的詳解以及使用時需要注意的一些細節-C語言基礎

這篇文章要探討的是“getchar()函式的詳解以及使用時需要注意的一些細節”。涉及getchar()函式的應用和需要注意的問題。屬於C語言基礎篇(持續更新)。 在C語言的學習過程中,我們常常需要接收鍵盤的輸入,在接收鍵盤輸入的過程中涉及到的函式通常有三個getchar()

C語言學習(四)在學習C語言時遇到的一些細節方面的問題

strlen與sizeof的區別:  strlen用來求字串的長度用的(不算最後的NULL)而sizeof是用來求指定變數或者變數型別等所佔記憶體大小用的比如strlen("nihao")它的結果是5而sizeof(int)它的結果是4也就是說int型佔四個位元組。它與是不是

記錄一些細節

.com 真的是 真的 array data blog width 。。 失敗 1.Thinkphp的distinct(field)查詢數據庫用作查詢去重時,如果後面加上order則是對distinct檢索出來的結果進行排序,而不是先排序再distinct去重,曾經想通過o

【react學習】關於react框架使用的一些細節要點的思考

through 私有變量 col 層級 -1 turn ech react 子函數 ( _(:3 」∠)_給園友們提個建議,無論是API文檔還是書籍,一定要多看幾遍!特別是隔一段時間後,會有意想不到的收獲的) 這篇文章主要是寫關於學習react中的一些自己的思考: 1.se

程序員之---C語言細節12(指針和數組細節,&quot;//&quot;的可移植性說明)

[1] watermark popu i++ gravity 移植 char dsm 指針 主要內容:指針和數組細節,"//"的可移植性說明 #include <stdio.h> int main(int argc, char

C# 一些學習作業

說明 下載地址 客戶 添加 動畫 編譯 判斷 管理後臺 第一個 下載地址:http://pan.baidu.com/s/1dEGCJdf 包括: 實現QQ旋轉窗體功能 非“按角度旋轉”,實現的是立體旋轉。 實現QQ旋轉窗體功能,窗口為不規則圖像,打開時旋轉180度展示。 原

java類的繼承的一些細節

翻譯 關鍵字 當前 fault args 消失 構造 子類 繼續   類的繼承是java面向對象體系的一個重要方面(封裝、繼承、多態),對於java類的繼承,需要註意如下細節。   1.構造函數。   如果一個類沒有任何構造函數,系統會默認分配一個無參的構造函數給它,這個構

權限模塊_使用權限_顯示有權限的鏈接_思路分析_攔截驗證每個請求的權限_完善權限的分類_一些細節

sca tomcat jsp getname stack string struts2 ava stand 權限模塊__使用權限__顯示有權限的鏈接1__思路分析 實現功能 導入源文件,找到AnchorTag.java類復制到工程中 AnchorTag.java pa

SQL SERVER中隱式轉換的一些細節淺析

開發 tle ima 我們 rom spa 都是 date 分享 原文:SQL SERVER中隱式轉換的一些細節淺析其實這是一篇沒有技術含量的文章,精通SQL優化的請繞道。這個緣起於在優化一個SQL過程中,同事問了我一個問題,為什麽SQL中存在隱式轉換,但是執行計劃沒有變?

ptmalloc一些細節流程

保存 lai sorted top none 如果 global 釋放 -c chunk 容器 Bins ptmalloc統一管理heap和mmap區的chunk,避免了頻繁的系統調用,一共維護了128個bin,使用數組來存儲,所有的bin都是雙向鏈表。

一些細節記錄

存在 OS set 直接 分布式 div blog 命令 log Redis 的分布式鎖實現。Redis 的分布式鎖都是基於一個命令 -- SETNX,也就是 SET IF NOT EXIST,如果不存在就寫入。 從 Redis 2.6.12 版本開始,Redis 的 S

05——wepy框架中的一些細節

失敗 while || 檢查 ces LV rand apply eject 1.wepy組件的編譯 wepy中使用一個組件時候,需要先引用(import)。再在需要使用該組件的頁面(或組件)中聲明。例如: import Counter from ‘/path/to/Co

idea創建maven web項目需要註意的一些細節

目錄結構 工程 成了 exp files 需要 png pen 項目 在idea中構建maven java web項目,從new project到選擇maven骨架到最後finish完成,整個流程完成後,項目基本結構已經出來,但是距一個可以正常開發運行的web項目還有一些距

Servlet的一些細節--學習筆記

Servlet的一些細節--學習筆記Servlet細節1)瀏覽器訪問的url-pattern只是一個符合格式的任意字符串,以/開頭2)一個Servlet的url-pattern可以是1個或多個,有二種形式;a).xxb)/xx/註意:/不能一起直接使用3)/和.do的映射關系,.do最後4)程序員編寫的Ser