Time of Update: 2018-12-04
#include <iostream.h> class A { public: A(int i) { a=i; } A() { a=0; cout<<"Default constructor called."<<a<<endl; } ~A() {
Time of Update: 2018-12-04
文章目錄 package access許可權protected許可權 Java對象建立 1.Java的編譯運行
Time of Update: 2018-12-04
經常有朋友用xerces-c開發程式,產生了gbk,或者gb2312編碼格式的xml報文,漢字被編碼為如下的樣子,檔案名稱test.xml:<?xml version="1.0" encoding="GBK" standalone="no" ?><InterBOSS> <UserInfo> <BizCode>125829999</BizCode> <ProdName>Å©&
Time of Update: 2018-12-04
——學英語難,嘗試翻譯老外部落格中的文章。先從簡單的開始吧。(原文作者David) 通常你無法修改一個 const 類型的記憶體,因為技術不支援。但是有一個方法(在建構函式運行前)使你能做到這一點。如果將值 0 傳遞給 80個 char 大小的const 類型字串型參,那麼當形參在解構函式中被銷毀後該形參就成為變數(Freeable)了。 #include <iostream>class Example{private: const char * ptr;
Time of Update: 2018-12-04
內嵌函式從原始碼層看,有函數的結構,而在編譯後,卻不具備函數的性質。編譯時間,類似宏替換,使用函數體替換調用處的函數名。一般在代碼中用inline修飾,但是否能形成內嵌函式,需要看編譯器對該函數定義的具體處理。內嵌函式的使用:對於一些功能簡單,規模較小的有使用頻繁的函數,可以設計為內嵌函式,內嵌函式不是在調用時發生控制轉移,而是在編譯時間將函數體嵌入在每一個調用處,這樣就節省了參數傳遞,控制轉移等開銷;
Time of Update: 2018-12-04
extern聲明一個外部變數與外部函數://源檔案1int i;//源檔案2extern int i;//聲明一個在其他檔案中定義的外部變數i;如果不寫這個extern int i;源檔案2是不能用檔案1中的變數i的;外部函數是在所有類外聲明的函數(非成員函數),都是具有命名空間範圍的,如果沒有特殊說明,這樣的函數都可以在不同的編譯單元中被調用,只要在調用之前有引用性聲明即可,也可以在聲明函數原型或定義函數時加關鍵字extern修飾,其效果和與不加是一樣的,預設都是外部可以調用的。
Time of Update: 2018-12-04
以後我的定位就是用linux下的C/C++開發,現在開始複習C++了,雖然以前學過,而且自己在大一的第二學期就已經學了一點點,但是那都是皮毛,去年暑假學了一點點STL,自我感覺還不錯,結果在大二第一學期的C++考試考得很爛,自己大二第一學期完全沒有學到神馬東西,雖說學了一點點的演算法,但是還是很弱的;標頭檔聲明//標頭檔聲明#ifndef SALE_H#define SALE_Hclass Sale{public:Sale(){}Sale(int p,int n):price(p),num(n)
Time of Update: 2018-12-04
就在剛才我感覺c++真的好複雜,函數重載,多態,虛函數,虛函數表,模版,繼承等一大坨東西好噁心,c++既然完全支援C語言,當然是把它的優缺點統統接下了,C語言中指標本身並不太難,是C語言的精華,當年剛開始學習C時看到說,學不會指標C和沒學一樣,當時真是熬夜看我們系老師自己編的那本白皮書,看指標看的眼花,東西學的再多,長時間不用很快又會忘得,就像是記英語單詞一回事,學了不用東西永遠不是自己的。指標本身也沒多大的難度,就是想用好指標比較難,而C++又增加上面說的一大坨東西,是物件導向的許多特性,變得
Time of Update: 2018-12-04
純虛函數的文法是:class Y {public :virtual void X () = 0;};在類內定義時是不能實現的,但是在類外是可以實現的:void Y:: X() {cout << "amazing!" << endl;}#include <iostream>using namespace std;class Pet {public: virtual void speak() const = 0; virtual void eat(
Time of Update: 2018-12-04
vc6.0///////////////////--- D:/simon/try/wqer/1.c --------------------------------------------------------------------------------------------------------1:2:3:4:5:6:7: int i = 0x10;8: int arr_i[5] = {0x11,0x12,0x13,0x14,0x15};9:10: int
Time of Update: 2018-12-04
在我的那篇“C++中虛解構函式的作用”中我說明了為什麼作為基類的類的解構函式必須是虛函數,同時也指出:為了避免產生虛函數表,如果類不是基類的話,解構函式就不需要聲明為虛函數。
Time of Update: 2018-12-04
這個原則是我通過觀察vc6處理方式建立的。當然了 在觀察過程中出了一些疑問。為瞭解決這些疑問和 讓 這個模型能有效運行總結如下:1.一個類設他是基類或者他的父類沒有需函數,則當編譯器編譯這個類是如果碰到有virtual函數編譯器就為這個類建立vtable;2.一個類,假定這個類 是一個衍生類別,並且它的父類有虛函數,如果這個類重載了父類的虛函數,這些虛函數填入父類已經建立的vtable.如果這個類自己定義了一些虛函數,這些虛函數父類沒有,則編譯器為這些衍生類別特有的虛函數建立一個vtable。(
Time of Update: 2018-12-04
class CBase{public: virtual void fn() { ; } virtual void Add(CBase b) { } virtual void Add(CBase pb) { }}; class CPart :public CBase{public: void fn() { cout<<"p:fn"<<endl; }};class CCom:public CBase{public: void fn() { cout<<
Time of Update: 2018-12-04
#include <iostream>#include <vector>#include <iterator>using namespace std;class CBase{public: virtual void fn() { ; } virtual void Add(CBase b) { } virtual void Add(CBase *pb) { } CBase( const CBase &b) { ::memcpy(
Time of Update: 2018-12-04
文章目錄 1、公有方法實現介面方法2、私人方法不能實現介面方法
Time of Update: 2018-12-04
#include <iostream>#include <exception>using namespace std;class A{public: A() { this->m_a = 0; this->m_st=""; } //__declspec(nothrow) void fn(int i) throw(string ,int ) { switch(i) { case 1: if(this->m_st.empty())
Time of Update: 2018-12-04
//用指標 操作 二維數組 float (*pointer)[4] , pointer是float *型變數,要看清楚!指向一維數組,有4個元素。float * search(float(* pointer)[4],int n)看清這種寫法!// 注意!! *(pointer + n) 和 (*pointer + n) 的區別。// pointer是指向二維數組的!! 即 pointer是 int * * 類型, *pointer +n, 相當於一維數組下標加nint main(
Time of Update: 2018-12-04
C++中的const正常情況下是看成編譯期的常量,編譯器並不為const分配空間,只是在編譯的時候將期值儲存在名字表中,並在適當的時候摺合在代碼中.所以,以下代碼:#include using namespace std;int main(){ const int a = 1; const int b = 2; int array[ a + b ] = {0}; for (int i = 0; i < sizeof array / sizeof *array; i+
Time of Update: 2018-12-04
struct Student{long num;char name[20];};1、指向結構體變數的指標int main() {struct Student stu;struct Student * p;p = &stu; //注意這一句的作用stu.num = 89101; //stu可以直接使用,但是p必須賦初值//stu.name = "gao tong"; 不能這樣給char name[20],賦值,應該用下面的strcpy函數strcpy(stu.name,"gao
Time of Update: 2018-12-04
C/C++指標指標應用詳解(留存學習)前言:複雜類型說明要瞭解指標,多多少少會出現一些比較複雜的類型,所以我先介紹一下如何完全理解一個複雜類型,要理解複雜類型其實很簡單,一個類型裡會出現很多運算子,他們也像普通的運算式一樣,有優先順序,其優先順序和運算優先順序一樣,所以我總結了一下其原則:從變數名處起,根據運算子優先順序結合,一步一步分析.下面讓我們先從簡單的類型開始慢慢分析吧:int p; //這是一個普通的整型變數int *p; //首先從P 處開始,先與*結合,所以說明P