不可或缺 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 ...
随机推荐
- 虚拟化平台cloudstack(4)——几个异常
cloudstack主机添加不成功 CloudStack正常启动,添加区域.提供点和群集都正常,但是添加主机时提示添加不成功. 先添加主机: 然后出现提示: 在网上找了一圈,基本上没什么回复,没办法, ...
- WINFrom Excal 数据导入数据库
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...
- tomcat项目无法发布异常,Could not copy all resources to .........(转)
[plain] <span style="font-size:18px;">Deployment failure on Tomcat 6.x. Could not c ...
- PowerDesigner实用操作
1. 让PhysicalDiagram里的表显示字段名Tools→Display Preferences→在General Settings里选择Table→点击Advanced→选择Form下的Co ...
- (数学)P、NP、NPC、NP hard问题
概念定义: P问题:能在多项式时间内解决的问题: NP问题:(Nondeterministic Polynomial time Problem)不能在多项式时间内解决或不确定能不能在多项式时间内解决, ...
- 大型网站系统与Java中间件实践
大型网站系统与Java中间件实践(贯通分布式高并发高数据高访问量网站架构与实现之权威著作,九大一线互联网公司CTO联合推荐) 曾宪杰 著 ISBN 978-7-121-22761-5 2014年4 ...
- 转【】浅谈sql中的in与not in,exists与not exists的区别_
浅谈sql中的in与not in,exists与not exists的区别 1.in和exists in是把外表和内表作hash连接,而exists是对外表作loop循环,每次loop循环再对内表 ...
- 自动登录VSS
每次打开vss都需要输入用户名.密码,用起来多少有些麻烦.用以下两种方式即可实现自动登录: 方法1: 在vss快捷方式的命令行最后面添加-y参数 "C:/Program Files/Micr ...
- 简单使用AutoMapper实现DTO转换
DTO(Data Transfer Object)数据传输对象,只是传输数据,完成与领域对象之间的转换,并不包含领域业务处理. 当领域模型设计人员只关注核心业务,满足于领域模型的精巧,而不关心具体实现 ...
- sublime简要笔记
选中单词 [1]选中当前单词 ctrl+d [2]跳过当前单词 ctrl+k ctrl+d [3]选中相同的所有单词 alt+f3 [4]多行游标 按住shift,然后按住鼠标右键向下拖动 行操作 [ ...