static void Main(String[] args) { Console.WriteLine("--------"); string myconn = "Database='test';Data Source=localhost;User ID=root;Password=123456;CharSet=utf8;"; //需要執行的SQL語句 string mysql =
1.簡介這一節介紹一些關於棧操作、資料類型判斷的LUA API,可以使用這些函數獲得指令碼中的變數值。2.步驟編寫 test01.lua 指令碼,在VS2003中建立控制台C++程式並正確配置,執行查看結果,修改test02.lua指令碼後查看執行結果 3.測試指令碼以下是用來測試的lua指令碼function plustwo(x) local a = 2; return x+a;end;rows = 6;cols =
宏定義:#define G 9.8 。。。。。。。。。。。#undef G宏定義的範圍注意不同: #define AB(X) x*x-2*x+10AB(1+2)=1+2*1+2-2*1+2+10=15AB(3)=3*3-2*3+10=13AB(3)*10=3*3-2*3+10*10=103 #define AB(x)
void的含義void即“無類型”,void *則為“無類型指標”,可以指向任何資料類型。void的作用①對函數返回的限定。②對函數參數的限定。當函數不需要傳回值時,必須使用void限定。例如: void func(int, int);當函數不允許接受參數時,必須使用void限定。例如: int func(void)。int f(){ return 0;}int main(int argc, char *argv[]){ f(10); //如果函數為int f(void),則報錯
struct MyStruct { double dda1; char dda; int
在C++中,如果一個數組被定義在類中,那麼它的賦值方法和通常的面向過程中的複製方法是不一樣的。不能再定義數組的時候同時給數組賦值,也不能再建構函式中直接利用等式對數組進行賦值。一種辦法如下: 1 class A{ 2 private : 3 int m_arr[10]; 4 public: 5 A() 6 { 7 temp_arr[10] = {1,2,3
普通移位:若數組想從某一位開始向右移n位,一般是從數組的最後一位開始逐次向右移位。程式如下:View Code #include <iostream>#include <stdlib.h>using namespace std;int s[11]={1,2,3,4,5,6,7,8,9,0};void main(){for (int i=0;i<11;i++) { cout<<s[i]; }
1 引言 Visual C++ 是當今最流行的軟體開發工具之一,它可以實現可視化編程和支援物件導向的編程技術。人們在開發的過程中將兩種語言進行混合編程,這種方法使兩種語言相互調用,進行參數傳遞,共用資料結構和資料資訊,充分發揮了各種語言的特點和優勢,大大提高了應用軟體的效率。因此,正確掌握Visual C++與組合語言的介面技術對軟體開發是十分必要的。 2
在Net2.0以上的版本對自訂configSection是件相對容易的事情.比如,我們要建立以下自訂的配置節ConfigSectionsLib<configuration><configSections><section name="ConfigSectionsLib"
本來不打算寫這篇的,但是檔案的重要性大家都知道。在裝置I/O中,有一種裝置叫檔案裝置,這是一個抽象的概念,就把它理解為檔案就行了。 檔案裝置,可以通過CreateFile函數開啟,得到一個檔案物件控點。 在檔案中,有兩個比較重要的屬性:1、檔案大小:在32位中最大為4GB,64位中可以達到16EB。2、檔案讀寫指標:這個指標表明讀寫位置,大小範圍可以超出檔案的大小。 先討論檔案的大小。 要得到檔案的大小,可以使用GetFileSizeEx函數:Code highlighting
上一篇討論有關“互鎖函數家族”處理線程同步的方法。本書中還描述了“快取行”(cache
只談一個問題:head_common.S中__switch_data:.long init_thread_union + THREAD_START_SPinit_thread_union 使用ctags無法跳轉,且連結指令碼中沒有init_thread_union,使用grep搜尋下發現這是在arch/unicore/kernel/init_task.c3
複合(composition)是類型之間的一種關係,當某種類型的對象內含它種類型的對象,便是這種關係:class Address {...}; class PhoneNumber {...}; class Person { public: ... private: std::string name;//合成成分物 Address address;//合成成分物 PhoneNumber
預設情況下c++以by value 的方式傳遞對象(或來自)函數。函數參數是以實參的副本為初值,用函數獲得的也是函數傳回值的一個副本這些副本由對象的copy建構函式產出,這可能使得pass-by-value成為昂貴的操作:class Person { public: Person(); virtual ~Person(); protected: private: std::string name;
為什麼有人想要替換operator new 和 operator delete呢?三個常見的理由:1.用來檢測運用上的錯誤。如果將“new所的記憶體”delete卻不幸失敗,會導致記憶體流失。如果在“new所得記憶體”身上多次delete會導致不確定行為。如果new持有一串動態分配的所得地址,operator delete將地址從中移走,倒是很容易檢測出上述錯誤用法。此外各式各樣的編程錯誤可能導致資料“overruns”(寫入點在分配區塊尾端之後)或“underruns”(寫入點在分配區塊之前)
template metaprogramming(模板元編程)是編寫template-based
重新定義一個繼承而來的non-virtual函數永遠都是錯誤的,本條款的討論限制在“帶有預設參數的virtual函數”。virtual函數是動態綁定的,而預設參數卻是靜態繫結。對象的所謂靜態類型,是它在程式中被聲明時所採用的類型。class Shape { public: enum ShapeColor {Red, Green, Blue}; virtual void draw(ShapeColor color = Red) const = 0;
c++中public繼承視為is-a關係。現在看private繼承:class Person{...}; class Student: private Person {...}; void eat(const Person& p); void study(const Student& s);Person p; Student s; eat(p); eat(s); //錯誤! 難道學生不是人?!顯然private繼承不是is-
設計優秀的classes和是一項艱巨的工作,因為設計好的types是一項艱巨的工作。設計出至少像c++內建類型一樣好的classes。幾乎每一個class都要求面對以下提問,回答往往導致你的設計規範:1,新type的對象應該如何建立和銷毀?包括構造和解構函式,記憶體配置和釋放函數(operator new, operator delete,operator new[], operator
inline函數,可以調用它們而又不需蒙受函數調用所招致的額外開銷當你inline某個函數,或許編譯器就因此又能力對它(函數本體)執行語境相關最佳化。然而,inline函數背後的整體觀念是,將“對此函數的每一個調用”都已函數本體替換之,這樣做可能增加你的目標碼(object