[源码下载]

不可或缺 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. java 堆栈分析4

    jprofiler ,又是一款好工具... —— 不过显然,我觉得有了jvisualvm就足够了,难道它会比jvisualvm还强大很多!?? 什么时候需要它呢?它有什么特别好用的地方吗? 带来什么方 ...

  2. NSString NSUrl 相互转化

    //NSString 转为 NSURL NSString *webStr = @"www.baidu.com"; NSURL *webUrl = [NSURL URLWithStr ...

  3. Atitit 教育与培训学校 的计划策划 v2

    Atitit 教育与培训学校 的计划策划 1. 历史大趋势,教育的普及化1 2. 我们的目标,人人可以接受硕士博士教育,确保全球60亿人的普世化教育1 3. 学校的注册,可以选择在全球费用最优惠的地方 ...

  4. Atitit usrqbg1834 html的逻辑化流程化 规范标准化解决方案

    Atitit usrqbg1834 html的逻辑化流程化 规范标准化解决方案 常用指令1 ..v-if.v-else指令2 v-for指令3 MVVM大比拼4 常用指令 本来按照Vue文档说明,常用 ...

  5. atitit.js浏览器环境下的全局异常捕获

    atitit.js浏览器环境下的全局异常捕获 window.onerror = function(errorMessage, scriptURI, lineNumber) { var s= JSON. ...

  6. linux配置hosts

    linux配置hosts linux下配置hosts和windows下其实就是一样的,找到文件在哪里就好 sudo vim /etc/hosts

  7. Sqlserver 中exists 和 in

    如图,现在有两个数据集,左边表示#tempTable1,右边表示#tempTable2.现在有以下问题: 1.求两个集的交集? 2.求tempTable1中不属于集#tempTable2的集? 先创建 ...

  8. Linux常用命令03

    上篇我们写到,如何编辑文件,我们有时候,在编辑的时候,有可能会异常的退出,这样的话, linux会针对这个文件生成一个swp文件,当你下次进入vi模式时,就会提示你一个错误 这样,即使你按enter键 ...

  9. Enterprise Solution 界面设计规范

    Enteprise Solution有一套自己的界面设计规范,也是很多年(10年以上)管理软件界面精华的积累.没有一个软件从一开始就很善于界面设计,许多个小小的改善,比如控件位置的移动,控件摆放顺序的 ...

  10. SQL Server 2012 T-SQL 新特性

    序列 Sequence SQL Server 现在将序列当成一个对象来实现,创建一个序列的例子语法如下: CREATE SEQUENCE DemoSequence START WITH 1 INCRE ...