[源码下载]

不可或缺 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. 生成格式化的json

    public static ContentResult returnJson(object obj) { var content = new ContentResult() { Content = J ...

  2. 04- Shell脚本学习--条件控制和循环语句

    条件判断:if语句 语法格式: if [ expression ] then Statement(s) to be executed if expression is true fi 注意:expre ...

  3. Atitit  DbServiceV4qb9 数据库查询类库v4 新特性

    Atitit  DbServiceV4qb9 数据库查询类库v4 新特性     V4新特性 安全特性,屏蔽了executeUpdate,使用v2版 Sql异常转换,特别转换了DuplicateEnt ...

  4. C#学习系列-out与ref的区别

    参考:http://www.microsoftvirtualacademy.com/Content/ViewContent.aspx?et=9851&m=9839&ct=31056 如 ...

  5. 让自己成为合格的IT员

        2016年10月27日,正式加入了IT天启网络公司,从今天开始就意味着我要正式进军IT行业了.      虽然是为期四个半月的培训,我相信我能够我一定可以在这四个半月的时间里成为一个合格的.优 ...

  6. JavaScript开发的技巧

    1. 使用===取代==    ==和!=操作符会在需要的情况下自动转换数据类型.但===和!==不会,它们会同时比较值和数据类型,这也使得它们要比==和!=快. "){ //速度慢 } & ...

  7. WPF入门教程系列十三——依赖属性(三)

    四. 只读依赖属性 在以前在对于非WPF的功能来说,对于类的属性的封装中,经常会对那些希望暴露给外界只读操作的字段封装成只读属性,同样在WPF中也提供了只读属性的概念,如一些 WPF控件的依赖属性是只 ...

  8. Netty学习五:Buffers

    1. Netty中的缓冲 在Netty中并没有使用Java自带的ByteBuffer,而是自己实现提供了一个缓存区来用于标识一个字节序列,并帮助用户操作原始字节或者自定义的POJO. Java NIO ...

  9. LinkedHashMap源码详解

    序言 本来是不打算先讲map的,但是随着对set集合的认识,发现如果不先搞懂各种map,是无法理解set的.因为set集合很多的底层就是用map来存储的.比如HashSet就是用HashMap,Lin ...

  10. JQuery uploadify 的使用

    在Java WEB项目中用到了上传图片的功能,于是百度了一下,发现 uploadify 的出镜率很高,于是决定使用这个插件.结果昨天调试了一天没有成功,今天早上仔细想了想,觉得应该是调用js文件的原因 ...