[源码下载]

不可或缺 Windows Native (11) - C++: hello c++, C++ 与 C语言的区别小介

作者:webabcd

介绍
不可或缺 Windows Native 之 C++

  • hello c++
  • C++ 与 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 = , x += , ++x); //
int y = (y = , y += , 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
[源码下载]

不可或缺 Windows Native (11) - C++: hello c++, C++ 与 C语言的区别小介的更多相关文章

  1. 不可或缺 Windows Native 系列文章索引

    [源码下载] 不可或缺 Windows Native 系列文章索引 作者:webabcd 1.不可或缺 Windows Native (1) - C 语言: hello c 介绍不可或缺 Window ...

  2. 不可或缺 Windows Native (25) - C++: windows app native, android app native, ios app native

    [源码下载] 不可或缺 Windows Native (25) - C++: windows app native, android app native, ios app native 作者:web ...

  3. 不可或缺 Windows Native (2) - C 语言: 常量,变量,基本数据类型

    [源码下载] 不可或缺 Windows Native (2) - C 语言: 常量,变量,基本数据类型 作者:webabcd 介绍不可或缺 Windows Native 之 C 语言 常量 变量 基本 ...

  4. 不可或缺 Windows Native (4) - C 语言: 预处理命令,输入,输出

    [源码下载] 不可或缺 Windows Native (4) - C 语言: 预处理命令,输入,输出 作者:webabcd 介绍不可或缺 Windows Native 之 C 语言 预处理命令 输入 ...

  5. 不可或缺 Windows Native (7) - C 语言: 指针

    [源码下载] 不可或缺 Windows Native (7) - C 语言: 指针 作者:webabcd 介绍不可或缺 Windows Native 之 C 语言 指针 示例cPointer.h #i ...

  6. 不可或缺 Windows Native (9) - C 语言: 动态分配内存,链表,位域

    [源码下载] 不可或缺 Windows Native (9) - C 语言: 动态分配内存,链表,位域 作者:webabcd 介绍不可或缺 Windows Native 之 C 语言 动态分配内存 链 ...

  7. 不可或缺 Windows Native (24) - C++: 运算符重载, 自定义类型转换

    [源码下载] 不可或缺 Windows Native (24) - C++: 运算符重载, 自定义类型转换 作者:webabcd 介绍不可或缺 Windows Native 之 C++ 运算符重载 自 ...

  8. 不可或缺 Windows Native (23) - C++: 虚函数

    [源码下载] 不可或缺 Windows Native (23) - C++: 虚函数 作者:webabcd 介绍不可或缺 Windows Native 之 C++ 虚函数 示例1.基类CppHuman ...

  9. 不可或缺 Windows Native (22) - C++: 多重继承, 虚基类

    [源码下载] 不可或缺 Windows Native (22) - C++: 多重继承, 虚基类 作者:webabcd 介绍不可或缺 Windows Native 之 C++ 多重继承 虚基类 示例1 ...

随机推荐

  1. OpenCV基于傅里叶变换进行文本的旋转校正

    傅里叶变换可以用于将图像从时域转换到频域,对于分行的文本,其频率谱上一定会有一定的特征,当图像旋转时,其频谱也会同步旋转,因此找出这个特征的倾角,就可以将图像旋转校正回去. 先来对原始图像进行一下傅里 ...

  2. SWF READER 破解日志。

    网上传闻swf reader是破解最厉害的神器,可以内存抓取+doSWF反编译.所以去官网下了一个: SWF_Reader_2.3 不出所料,demo版本没有反编译的功能.网上搜到一个哥们尝试了下: ...

  3. http 各个状态码及对应的java 编程

    http的状态? 200 301 302 400 404 500 501 等等 如何编码? 其实这个是web服务器的范畴.服务器处理各个请求的时候,如果正常, 自然就是200 http://www.c ...

  4. xamarin UWP设置HUD加载功能

    使用xamarin开发的时候经常用到加载HUD功能,就是我们常见的一个加载中的动作,Android 下使用 AndHUD , iOS 下使用 BTProgressHUD, 这两个在在 NuGet 上都 ...

  5. 品味FastDFS~第三回 项目中的FastDFS

    回到目录 包括京东,淘宝在内的几个互联网老大,在实现分布式文件存储这块都使用了FastDFS,它是一个轻量级的东西,安装与使用都很方便,服务器间通过socket进行数据通讯,无论在安全和效率上都是可以 ...

  6. Redis的介绍及使用实例.

    本文就来讲一下Redis安装的方法和Redis生成主键的优点以及和其他几种方式生成主键的对比. 1,Redis安装首先将Redis的tar包拷贝到Linux下的根目录 然后解压到redis文件夹下:( ...

  7. Atitit attilax在自然语言处理领域的成果

    Atitit attilax在自然语言处理领域的成果 1.1. 完整的自然语言架构方案(词汇,语法,文字的选型与搭配)1 1.2. 中文分词1 1.3. 全文检索1 1.4. 中文 阿拉伯文 英文的简 ...

  8. 每天一个linux命令(35):ln 命令

    ln是linux中又一个非常重要命令,它的功能是为某一个文件在另外一个位置建立一个同步的链接.当我们需要在不同的目录,用到相同的文件时,我们不需要在每一个需要的目录下都放一个必须相同的文件,我们只要在 ...

  9. javaweb回顾第十篇JSTL

    前言:JSTL(JSP Standard Tag Library)JSP标准标签库.它的目的是为了简化JSP的开发,如何没有JSTL可能我们开发的时候就需要写大量的自定义标签,无疑会加大开发难度,有了 ...

  10. 深入理解PHP内核(十三)类的结构和实现

    原文链接:http://www.orlion.ga/1117/ 先看一下类的结构: struct _zend_class_entry {     char type;     // „类型:ZEND_ ...