不可或缺 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语言的区别小介的更多相关文章
- 不可或缺 Windows Native 系列文章索引
[源码下载] 不可或缺 Windows Native 系列文章索引 作者:webabcd 1.不可或缺 Windows Native (1) - C 语言: hello c 介绍不可或缺 Window ...
- 不可或缺 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 ...
- 不可或缺 Windows Native (2) - C 语言: 常量,变量,基本数据类型
[源码下载] 不可或缺 Windows Native (2) - C 语言: 常量,变量,基本数据类型 作者:webabcd 介绍不可或缺 Windows Native 之 C 语言 常量 变量 基本 ...
- 不可或缺 Windows Native (4) - C 语言: 预处理命令,输入,输出
[源码下载] 不可或缺 Windows Native (4) - C 语言: 预处理命令,输入,输出 作者:webabcd 介绍不可或缺 Windows Native 之 C 语言 预处理命令 输入 ...
- 不可或缺 Windows Native (7) - C 语言: 指针
[源码下载] 不可或缺 Windows Native (7) - C 语言: 指针 作者:webabcd 介绍不可或缺 Windows Native 之 C 语言 指针 示例cPointer.h #i ...
- 不可或缺 Windows Native (9) - C 语言: 动态分配内存,链表,位域
[源码下载] 不可或缺 Windows Native (9) - C 语言: 动态分配内存,链表,位域 作者:webabcd 介绍不可或缺 Windows Native 之 C 语言 动态分配内存 链 ...
- 不可或缺 Windows Native (24) - C++: 运算符重载, 自定义类型转换
[源码下载] 不可或缺 Windows Native (24) - C++: 运算符重载, 自定义类型转换 作者:webabcd 介绍不可或缺 Windows Native 之 C++ 运算符重载 自 ...
- 不可或缺 Windows Native (23) - C++: 虚函数
[源码下载] 不可或缺 Windows Native (23) - C++: 虚函数 作者:webabcd 介绍不可或缺 Windows Native 之 C++ 虚函数 示例1.基类CppHuman ...
- 不可或缺 Windows Native (22) - C++: 多重继承, 虚基类
[源码下载] 不可或缺 Windows Native (22) - C++: 多重继承, 虚基类 作者:webabcd 介绍不可或缺 Windows Native 之 C++ 多重继承 虚基类 示例1 ...
随机推荐
- 跨站脚本攻击XSS
跨站脚本攻击(Cross Site Script为了区别于CSS简称为XSS)指的是恶意攻击者往Web页面里插入恶意html代码,当用户浏览该页之时,嵌入其中Web里面的html代码会被执行,从而达到 ...
- Senparc.Weixin.MP SDK 微信公众平台开发教程(十三):地图相关接口说明
为了方便大家开发LBS应用,SDK对常用计算公式,以及百度和谷歌的地图接口做了封装. 常用计算: 用于计算2个坐标点之间的直线距离:Senparc.Weixin.MP.Helpers.Distance ...
- EF架构~为导航属性赋值时ToList()的替换方案
回到目录 今天在进行EF开发时,遇到一个问题,在进行join查询时,类中的一个集合类型的导航属性,在给它赋值时,将查询出来的结果ToList()后,出错了,linq to entity不支持这种操作, ...
- EF架构~CodeFirst生产环境的Migrations
回到目录 Migrations即迁移,它是EF的code first模式出现的产物,它意思是说,将代码的变化反映到数据库上,这种反映有两种环境,一是本地开发环境,别一种是服务器的生产环境,本地开发环境 ...
- rabbitmq消息队列——"topic型交换器"
在之前的章节中我们改进了我们的日志系统,我们使用direct型交换器代替了只能盲目广播消息的fanout型交换器,这使得我们可以有选择性地接收日志. 尽管使用direct型交换器改进了我们的日志系统, ...
- mysql创建数据库
mysql创建数据库 创建utf8编码的数据库 CREATE DATABASE IF NOT EXISTS my_db default character set utf8 COLLATE utf8_ ...
- 彻底理解跨域解决方案JSONP
什么是同源策略? 同源策略,它是由Netscape提出的一个著名的安全策略.现在所有支持JavaScript 的浏览器都会使用这个策略. 所谓同源是指,域名,协议,端口相同.当一个浏览器的两个tab页 ...
- font-size:100%有什么作用
h1,h2,h3,h4,h5,h6 {font-size:100%;font-weight:normal;} input,select,textarea,samp {font-size:100%;} ...
- javase基础复习攻略《七》
容器是什么?通俗的讲容器指可以装其它东西的器皿,前面我们提到的数组便是容器的一种,容器的概念在JAVA中便可以理解为用来存储其它对象的器皿.本篇就让我们一起来认识一下JAVA为我们提供的容器类. 1. ...
- ES6入门系列四(测试题分析)
0.导言 ES6中新增了不少的新特性,来点测试题热热身.具体题目来源请看:http://perfectionkills.com/javascript-quiz-es6/. 以下将一题一题来解析what ...