[源碼下載]
作者:webabcd
介紹
不可或缺 Windows Native 之 C++
示例
1、hello c++
CppHello.h
// 保證文件只被編譯一次(即使被多次引用,也只被編譯一次)
/*
* #ifndef 的方式依賴於宏名字不能沖突
* #pragma once 保證同一個文件不會被多次編譯,這裡的“同一個文件”是指物理上的一個文件
* #pragma once 依賴於編譯器;而 #ifndef 則受語言天生的支持
*/
#pragma once
// 包含指定頭文件
/*
* 舉個例子:
* <string.h> 是 c 標准庫下的文件
* <cstring> 包含了 c 標准庫下的 string.h 文件,並放置在命名空間 std 下
* <string> 是 c++ 標准庫的 string 類,在命名空間 std 下
*/
#include <string>
// 引用命名空間 std (std - standard)
using namespace std;
// 自定義命名空間
namespace NativeDll
{
class CppHello
{
public:
string Hello(string name);
};
}
CppHello.cpp
/*
* hello c++
*/
#include "pch.h"
#include "CppHello.h"
// 頭文件中定義的命名空間
using namespace NativeDll;
// 實現頭文件中的函數(之前要 using namespace NativeDll;)
string CppHello::Hello(string name)
{
return "hello: " + name;
}
/*
什麼是編譯?
1、為了使計算機能執行高級語言源程序,需要用編譯器(complier)把源程序翻譯成二進制形式的目標程序(object program)
2、編譯是以源程序文件為單位分別編譯的,目標程序一般以.obj或.o作為後綴(object 的縮寫)
3、得到多個目標文件後,需要用連接程序(linker)將一個程序的所有目標程序和系統的庫文件以及系統提供的其他信息連接起來,最終形成一個可執行的二進制文件
*/
2、C++ 與 C語言的區別小介
CppDiff.h
#pragma once
#include <string>
using namespace std;
namespace NativeDll
{
class CppDiff
{
public:
string Demo();
};
}
CppDiff.cpp
/*
* C++ 與 C語言的區別小介
*/
#include "pch.h"
#include "CppDiff.h"
using namespace NativeDll;
struct birth
{
int year;
int month;
int day;
};
string CppDiff::Demo()
{
/*
我是多行注釋
ANSI C 只支持多行注釋,而不支持單行注釋
*/
// 我是單行注釋 \
如果單行注釋後面以“\”結尾則下一行也是注釋 \
多行注釋“/**/”是不能嵌套的,但是多行注釋內可以有單行注釋
/*
void fun(); // C 語言的這句代表可以傳遞任意參數,C++ 的這句代表不可以傳遞任何參數
void fun(void); // C 語言的這句代表不可以傳遞任何參數,所以 C 語言建議無參數時要使用 void
*/
// C++ 可以取寄存器變量的地址,但編譯器會將其變為內存變量(因為寄存器變量無地址)
/*
C 語言會把字符當做 int 類型
C++ 會把字符當做 char 類型
比如:sizeof('a')
ANSI C99 會將其看作為 int 類型(32 位機器上一般編譯器會讓 int 占用 4 字節),所以會返回 4
ISO C++ 會將其看作為 char 類型,占 1 字節,所以返回 1
*/
// C++ 的基本數據類型中新增了 bool 類型
bool b = true;
// 定義結構體變量時,C 語言要求是“struct 結構體名 變量名”,而在 C++ 中 struct 可以省略掉
struct birth myBirth1;
birth myBirth2;
// 由逗號運算符連接的逗號表達式,一個表達式一個表達式地依次求解,整個表達式的值是最後一個表達式的值(注意,逗號運算符級別最低,要用括號括起來)
int x = (x = 1, x += 1, ++x); // 3
int y = (y = 1, y += 1, y++); // 2
// std::string 可以非常簡單地完成字符串的復制,拼接之類的功能
std::string str1 = "webabcd";
std::string str2 = "wanglei";
std::string str3 = str1; // 復制字符串,相當於 strcpy
str1 = "lalala"; // 改變 str1 不會影響 str3
std::string str4 = str1 + " " + str2 + " " + str3; // 字符串拼接很簡單
return "看代碼及注釋吧";
}
OK
[源碼下載]