C++編程經驗總結1

面向對象的精髓:

主函數其實就是對于類的元素和動作的重新組合來進行一項活動。

一個思想概念:程設是清楚的,完美的。

??????????????數學是清楚的,是完美的。

??????????????物理是有趣的,尤其是量子物理

??????????????生物是清楚的,尤其是基因

?????????????外語是完美的,……

*******************************************************************************

外界的調用??成員函數??protect的不能被外界調用,但是可以是子類調用

限定符???對象的定義和結構體一樣,可以附在后面??默認是私有的(Private)

類中的成員函數之間可以調用的

在類外定義成員函數,但是在類內部要首先及進行申明

::作用域限定符???全局函數??

Inline內置函數(其實是把簡單的代碼段嵌入進來) ??

成員函數指定為內置函數的方法???頭文件

其實是與OS交互的語言,內部的編譯調用理解的

This指針 ???成員函數在存儲上其實和對象是分離的

通過對象的引用變量來訪問對象的成員

定義引用變量??

time t1;

Time &t2=t1;

定義類的對象的方法一般是在主函數里

主函數運行的過程其實就是多個對象在行為而產生的時空狀態的改變?(其實就是通過一個個消息)

頭文件里是類的定義,但是沒有類里函數的定義,防止成員函數閉多次調用要經行多次編譯

類庫

類對象的初始化有一種是和結構體很像的?time t1={14,15,16}; 14 15 16分別對應類的變量

含有主函數的類就是主類,要運行一定有個主類

一個類里要設計自己的變量的set函數嗎。不需要

構造函數(與類同名字函數)它是特殊的成員函數

構造函數的內容自己設計

構造函數當然也是可以在類外定義的,和普通的成員函數一樣,但要記得在類內申明

構造函數也像消息一樣,用于改變狀態,無返回值

類有構造函數是必須的,當定義一個類對象時,就會調用構造函數,并會有初值,然后通過交互改變初值,但是其實還是有交互函數set() ?show()

C++程序的結構就是:有#(用于包含系統文件進來)

???????????????????有多個類及其內部結構

???????????????????有一個主函數,一般主函數是在最后

?????????????******這些是順序關系,用于改變計算機時空狀態,這是程序運行的結果

要深入領會程序不同寫法之間的區別

構造函讓主函數簡單,主函數里面不需要定義函數

構造函數不能被調用,在定義對象的時候自己自動執行

構造函數可以帶參???在類外經行定義構造函數

構造函數的參數在對象定義的時候給出

參數初始化表:

box(int h,int w,int len):height(h),width(w),length(len) { } ?//注意后面的{}不能省

類可以由多個構造方法,但是名字都是一樣的,就是重載

默認構造函數?(缺省構造函數)

構造函數的默認參數??

默認參數構造函數是不能重載的

析構函數:對象結束時候自動執行的??~box()

對象的全局和局部

題目是什么,其實就是知識的變相啊

一個類只能有一個析構函數??

析構函數是類必須有的,可以自己設計,可以補充

析構函數就是插銷對象的內存之前做的工作,完成清理工作

Static局部對象在函數調用后不釋放,所以不進行析構 ,而只有在mian?或是exit函數調用后使用析構

在一個函數中定義一個對象,調用結束時則進行析構函數

有全局對象的析構,析構是作用域完成時候才會調用

用new創建一個對象時,用delect釋放內存時,自動調用該對象的析構

當顯式的定義析構函數時候,對象執行之后會顯示出來

默認的時候是不會顯示出來,其實析構函數的總是存在保證了內存的安全保障

析構函數的調用和構造函數的調用是棧結構,順序是相反的(對象的作用域是很重要的,根據作用域的不同,又是不一定的)

復制構造函數??轉換構造函數??

可以有靜態對象

對象數組?(多個對象組成數組)

Student stud[3];?類的對象數組

對象的構造函數的參數若一個,則:

Student stud[3]={3,4,5};

指針可以指向對象(對象指針)?Time *pt; ?//指向類的指針

(*Pt).hour ??pt->hour是一樣的效果,指向對象的成員變量hour

定義一個函數指針?void (*p) ( );

?????????????????P=fun;

?????????????????(*p)( );//通過指針調用fun函數

?

Void?(Time::*p2)( );//定義指向成員函數的指針

P2=&Time::get_time;//給該指針賦值 ??***這兩句可以合一

This指針,是在成員函數里的指針,指向本類對象 ?this可以是顯式寫一般是隱式(編譯系統補充的)

常對象??Time const ?t1(12,34,46);

常對象不能調用其他非常成員函數

常成員函數??void get_time( ) ?const;

????????????Mutable int count; //這時候就可以用常成員函數來修改該數據變量了

指向對象的常指針??指向常對象的指針變量???指向常變量的指針

??????????????????Const Time *p=&t1; ??????const char ?*p;

Time ?&t ??//t是time對象的引用 ??const ?Box&b;

New box;//動態建立對象,這個對象存在但是不能用,是無名對象,它的返回值是指針

,通過指針來訪問這對象

對象之間的賦值??t1=t2; ?對象之間的賦值只是成員變量,不是成員函數

Box box2(box1);

或者?Box box2=box1;

復制構造函數是隱形的

類中的靜態數據成員代表產生的對象的該屬性是一樣的

靜態的就是公共的。

靜態數據成員可以用類名或者是對象名來引用

靜態成員變量在類外部初始化,不能通過參數初始化表初始化

Int ?Box::length=3;

靜態變量是在類層次的

公用的成員函數可以引用靜態變量

可以在函數中定義類???靜態變量起了全局變量的作用,但是和全局變量不同,要好

靜態成員函數的調用

Box::volume();

A.volume();

靜態成員函數的作用就是處理靜態變量

默認情況下,靜態成員函數不能訪問本類中的其他非靜態成員

成員函數都有this指針,但是靜態成員函數沒有

友元函數?友元類

友元函數在類外定義,在類內申明,?friend void display( );

這樣該函數就可以訪問類的私有變量了

友元可以是其他類的成員函數

* (&a)=* p ??實際是a的值

內存尋址方式??void *p=&a;

常量指針??int ?*const p;

常引用?const int &ra=a;

指向常量的指針常量?const int * const p=&a;

邏輯?關系?條件???提取符和插入符??插入運算符的級別低??endl=’\n’

Cout<<oct<<a<<’+’<<b<<’=’<<c<<endl; ?八進制

順序??選擇?循環

Goto ?niu;

Niu: ?*****; ?他們在同一個函數體中

匿名對象???內聯函數

返回引用類型的函數??int & max(int &a,int &b);

CFC?命名空間using namespace ?std; ??浩強工作室 ?未名湖畔 ?清華園

類型識別(RTTL) ??虛函數

#include <iostream>

Using namespace std;?(其實就是包)

Int main()

{ ??cin>>a>>b;

???Cout<<”this is a C++\n”; ??<<插入運算符 ?cout是流對象

???也可以用printf(“****”);

??Count<<”?”<<sum<<endl; ??endl(換行) ?輸入必須空格控制輸入參數

???Return 0;

}

類和函數都是在std命名空間里的

Class student

{private:

????????****

Public:

????????*****

};

友元類?控制流setw(6)————iomanip

C++輸出輸出其實是串控制的形式

Const int ?a=2;

函數原型的申明簡單了

Sealed ??explicit ??gcnew ?nullptr ??generic ??literal ?MFC

主函數中類類型的變量就是對象??智能的語言都是大小寫敏感的C \c++

5UL無符號長整型 ?

枚舉類型變量:

Enum ?color(red,yellow,blue);

Int main()

{color ?c;

c=red;

}

E ?e是一樣的指數 ??f為單精度?e為雙精度 ?L為雙長精度

‘\0’表示空字符??\ddd=\xhh

???????????????八進制?16進制

\\表示反斜杠???“niuweiqiang”是字符串

轉移字符之前加\,就會不沖突

字符串的儲存一定是后面自動有\0

函數模板(template)

Template<typename ?T,class ?T1>;

T max(T a,T b)

Alias別名 引用(變量的別名) ?int &b=a;(b為引用變量,引的是a)

引用變量感覺有點像指針???引用比指針好

引用不能有指針變量???數組沒有引用????

內置函數(內嵌函數,內聯函數)??inline ?int max(int a,int b) ?不再進行宏定義

Const ??

作用域運算符::???::a表示訪問全局變量

#include<string>

字符串類型變量?string string1;(類名 對象)

字符數組存放字符串??strcat() ?strcmp() ?strcpy()

字符串類的對象?????字符串數組

New int(100);開辟空間,整數初值100,返回值是指針

Delete [] pt;撤銷空間

New ?delete是運算符,不是函數

條件編譯

#if ?***//表達式非0,則執行第一句

???……

#else

??……//第二句

#endif

?

?

聯編

#ifndef ?標識符

???#define ?標識符

??……

#endif ???//標識符已經被定義,則忽略,沒有被定義,則執行……

一般申明和定義分離??

Extern int a;表示變量a的作用域在幾個文件中

Static只是在本文件中

命名空間就是對象極其相關的集合,可以理解為地域區域。

Using ?namespace ?std;

命名空間是相對于頭文件而言的

命名空間里面有元素(元素就是類?函數??對象)

名空間其實就是文件管理里的,相當于C的擴展名,.h什么的

當然擴展式的作為補充可以要,當空間里沒有這種頭文件時

Using ?std::cin; ?//指定使用std的元素cin

可以自己定義命名空間

Namespace ?mingmin1

{

??Class ?niu{

……

……

};

??函數1;

??函數2;

}
using namespace ?mingmin1;

Using mingmin1::niu; //使用命名空間

包含命名空間?#include?“mingmin1.h”

#include<cstdio.h> ?//C格式變為C++格式

Abort ?assert ??exit

Void **(int ?status或void或expression) //**為這三個,終止執行

?

匿名對象??嵌套調用(調用別的函數)??遞歸調用(調用自身)??

直接遞歸??間接遞歸???堆棧

Fibonacci ??函數指針

Typedef ?Double ?(*p) (double ,double);

Typedef ??Functiontype *p;//都是定義函數指針typedef可以省略

P=max;

X=p(0.1,0.3);

函數指針還可以作為參數????函數指針還可以調用庫函數

內聯函數(內置函數)節省函數調用開銷??內置函數是簡單函數

內置函數在類外前定義

函數調用的過程其實和中斷有點像。都要用棧機制來保存現場

函數重載只是參數列表不一樣,其他的是一樣的

應用程序(項目/工程)——多個文件

自動存儲?auto(register) ?int x,y;//是默認的

全局的標識符默認為extern ???extern也表示靜態的

static的局部變量只能定義在函數體內使用 ?靜態的變量程序一執行就是都存在

標識符作用域的可見性??

文件作用域就是大的作用域(全局變量)

頭文件????文件結構

預處理指令(可以在任何位置)??預處理文件

#incude< >

#include’?‘

C++安裝的時候就把庫文件來下載了 ??盤符

可以自己寫頭文件??宏定義#define ?pi ?3.14

友元成員函數

Friend ?void ?time::diaplay(data &); ?//time類的diaplay函數為本類的成員函數

一個函數可以是多個類的友函數????可以提前引用申明類

友元類??友元關系是單向的不能傳遞的

Friend niu;

函數模板

Template<class int> ????????類模板是類的抽象

Compare<int>cmpq(3,7); ????模板類是類

在外部定義模板函數??

template<class numtype>

Numtype compare<numtype>::max( )

{return (x>y)?x:y;}

Static int niu[4]; ??//初始化的時候都為0

Const int niu[3]; ??//初始化后不變

數組的下標越界訪問是很危險的

通過指針訪問數組????數組名就是數組的首地址???MSDN

字符串變量

指針數組??int *p[3];

指向數組的指針數組??int (*p_niu[3])[ ];

指向函數的指針是可以調用函數的

Typedef int ftype( );

Ftype ??*pmax[3];

Int ??(*max[3]) ( )

Pmax[1] ( ) ?用指針調用函數數組的第一個函數

用指針訪問數組

Int *p=New int(0);

Delete p; ????//動態分配和收回內存

結構體類型的指針變量(指向結構體的指針)

結構數組

Struct People

{

Int a;

Double x;};

People niu[3]; ?//niu為結構數組

索引和順序映像?????鏈表要用到結構

josephus環問題(用到動態鏈表機制來實現)

編程的本質就是數據的組織和運行規則的制定。

類是數據類型???struct也可以定義類,但是不常用,而且一般定義的都是共有的成員

.和->效果一樣

This指針指向對象的地址(因此可以把this看做是一個自身對象) ?

this是成員函數的指針參數 ??

This指針不能顯式說明,但是可以顯式使用,而且是常指針

成員函數的參數可以是指調用自己的對象

常函數(函數的this指針指向常指針(指向常變量))

復制構造函數???Time:Time(const ?Time &p,int =1); //引用名可以為空

深復制(自定義復制函數)??淺復制(默認復制函數)

STL源碼分析 ????類是一個數據類型 ??類屬

運算符函數

Void ?Time::operator ++(int a,int b)

{

……

}

運算符其實是一個函數???運算符函數的重載可以是成員函數和友元函數

操作對象為類的時候就輝重載運算符函數??

重載函數都是了類的

流插入<< ?流提取>> ??cout ?cin為對象

類類型轉換函數???類類型的轉換

制造C++語言的這些人好厲害啊,規則是什么都記不住啊。對于語言的實踐有沒有必要深入的研究的精通。 是的,要精通,深入研究總會理解的。道理懂了之后一定要會用。

???????????????????????????????? ? 2017?? 5.19??? Lanzhou? in China

轉載于:https://www.cnblogs.com/niu3/p/9352084.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/254035.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/254035.shtml
英文地址,請注明出處:http://en.pswp.cn/news/254035.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

DM365的BSP源碼分析-基于2.6.18內核

DM365的BSP主要包含mach-davinci和plat-davinci兩個目錄&#xff08;及相關頭文件&#xff09;&#xff0c;BSP復雜龐大又極其重要&#xff0c;它主要完成了板級的初始化&#xff0c;比如內存映射&#xff0c;時鐘和電源初始化&#xff0c;中斷和IO初始化&#xff0c;CPU及各模…

第四章:Django 模型 —— 設計系統表

1. Django框架提供了完善的模型&#xff08;Model &#xff09;層來創建和存儲數據&#xff0c;每一個模型對應數據庫中的唯一的一張表。 2. Django 模型基礎知識&#xff1a; 。每一本模型是一個Python類&#xff0c;繼承了django.db.models.Model類 。該模型中每一個屬性一個…

DM365 使用BT656協議驅動LCD的實現

前兩天已經調好了&#xff0c;主要是對davinci_platform.c的修改 因為輸入輸出都為pal的制式&#xff0c;所以就在pal的函數中進行了修改。 在PAL設置的函數中&#xff0c;修改如下&#xff1a; /* * setting PAL mode */ static void davinci_enc_set_pal(struct vid_enc_mode…

工業視覺鏡頭NAVITAR

品牌介紹 美國NAVITAR是優越的上等光學系統制造商和供應商&#xff0c;工業視覺鏡頭NAVITAR為機器視覺、檢測和生物醫學診斷行業提供的定制光學解決方案。 工業視覺鏡頭NAVITAR用于鑒定產品、檢查產品缺陷、測量零件尺寸、操縱機器人設備和協助進行科學分析與探索。 還用來引導…

TCP系列48—擁塞控制—11、FRTO擁塞撤銷

一、概述FRTO虛假超時重傳檢測我們之前重傳章節的文章已經介紹過了&#xff0c;這里不再重復介紹&#xff0c;針對后面的示例在說明兩點1、FRTO只能用于虛假超時重傳的探測&#xff0c;不能用于虛假快速重傳的探測。2、延遲ER重傳觸發的進入Recovery狀態時候&#xff0c;并不會…

娛樂一下

6年前&#xff0c;沒幾個人知道尤里米爾納&#xff08;Yuri Milner&#xff09;是誰。但今天&#xff0c;他已經是地球上最有名的投資人了。 短短幾年內&#xff0c;這家伙掌管的風險投資基金DST&#xff08;數字天空科技&#xff09;投遍了全球的互聯網明星企業&#xff0c;并…

機器視覺行業市場現狀及發展前景分析

1.中國的機器視覺起步較晚&#xff0c;目前正處于快速增長期。 我國機器視覺最早起源于20世紀80年代。機器視覺生產線和先進設備自1998年眾多電子、半導體企業落戶廣東、上海以來&#xff0c;先后在國內誕生了國際代理商和機器視覺系統集成商。 第一個階段是1999-2003年的啟蒙…

從bootm 命令講起/U-boot的環境變量: bootcmd 和bootargs

從bootm 命令講起 1 找到linux的內核入口 Bootm命令通過讀取uImage的頭部040字節的信息&#xff0c;將uImage定位到正確的地址&#xff0c;同時找到linux的內核入口地址。 這個地方就涉及到uImage的頭部040字節信息到底是什么的問題?uboot提供了mkimage命令去把040字節加在lin…

關于創建SWAP示例

cd /data 進入指定目錄dd if/dev/zero of/data/swapfile bs1M count102400【參數說明】if文件名&#xff1a;輸入文件名&#xff0c;缺省為標準輸入。即指定源文件。< ifinput file >of文件名&#xff1a;輸出文件名&#xff0c;缺省為標準輸出。即指定目的文件。< of…

一個公式來說明加接圈的作用和缺點

一個公式來說明加接圈的作用和缺點 在很多視覺項目中&#xff0c;如果想要將視野縮小&#xff0c;一種方式是換用長焦鏡頭&#xff1b;另一種方式則是通過加接圈的方式來實現。那么&#xff0c;接圈到底改變的是什么參數&#xff0c;能夠使圖像進行放大呢&#xff1f;核心公式上…

bzoj4636: 蒟蒻的數列

作為惟一一個離線動態開點線段樹的。。我是不是沒救了。。 維護一下區間修改和區間和。。。 然而由于一些奇怪的原因翻車 到最后索性跑到一個點直接開左右兒子 最后注意區間左右端點可以相等。。。 1 #include<cstdio>2 #include<iostream>3 #include<algorithm…

module_param 在內核編程中的作用

module_param 在用戶態下編程可以通過main()的來傳遞命令行參數&#xff0c;而編寫一個內核模塊則通過module_param()! module_param的作用一.module_param1.為什么引入 在用戶態下編程可以通過main()來傳遞命令行參數&#xff0c;而編寫一個內核模塊則可通過module_param()來傳…

ubuntu 備忘

卷組擴容 Linux mint采用默認卷組的安裝方式 sainLinux ~ $ df -hl Filesystem Size Used Avail Use% Mounted on udev 3.7G 0 3.7G 0% /dev tmpfs 743M 9.5M 733M 2% /run /dev/mapper/mint--vg-root…

DDL DML DCL

2019獨角獸企業重金招聘Python工程師標準>>> DDL is Data Definition Language statements. Some examples:數據定義語言&#xff0c;用于定義和管理 SQL 數據庫中的所有對象的語言 DML is Data Manipulation Language statements. Some examples:數據操作語言&…

學習halcon的論壇與書籍

論壇、培訓 halcon學習網&#xff1a;http://www.ihalcon.com/鳥叔機器視覺&#xff1a;http://bbs.szvbt.com/forum.php 博客 韓兆新的博客園majunfuLife and Codingzhaojun的博客風韻無聲騎螞蟻上高速的博客小馬_xiaoLV2小新識圖程序園-程序員的世界章柯淵的博客 注&…

LINUX內核中的xx_initcall初始化標號

LINUX內核中的xx_initcall初始化標號 田海立CSDN 2011-07-02 LINUX內核中有很多的初始化指示標志postcore_initcall(), arch_initcall(), subsys_initcall(), device_initcall(), etc. 這些起什么作用呢&#xff1f;查閱源代碼&#xff08;android goldfish-2.6.29&#xff09;…

代碼習慣---打印參數

打印參數很重要。轉載于:https://www.cnblogs.com/Andomly/p/6050773.html

javascript設置和獲取cookie的方法

設置cookie的方法&#xff0c;和獲取cookie的方法例如以下 設置cookie document.cookie"name"value;//獲取cookie當中index是cookie的名稱function getCookie(index){var allcookies document.cookie; var cookie_pos allcookies.indexOf(index);if (cookie_pos !…

favicon.ico--網站標題小圖片二三事

前言: 什么是favicon? 直接用圖說話:這個就是favicon favicon.ico 是一種格式&#xff0c;一般用于網頁地址欄前或者在標簽上以縮略方式顯示網站標志&#xff0c;也可以拖曳favicon到桌面以建立到網站的快捷方式。為什么要設置favicon圖標&#xff0c;以圖像形態顯示&#xff…