在 Visual Studio 中安装“使用 C++ 的桌面开发”工作负载并在计算机上运行
创建项目
1、在主菜单中,依次选择“文件”>“新建”>“项目”,以打开“新建项目”对话框。
向项目添加类
1、解决方案资源管理器
- 可以使用“解决方案资源管理器”来组织和管理解决方案中的项目、文件及其他资源。
- 添加类时,Visual Studio 添加相应的 .h 和 .cpp 文件。 可以在“解决方案资源管理器”中查看结果。
- 如果 Visual Studio 中未显示“解决方案资源管理器”窗口,请在菜单栏上选择“视图” > “解决方案资源管理器”。
2、在“解决方案资源管理器”中,选择“Game”项目 。 在菜单栏上选择“项目” > “添加类”。
3、在“添加类”对话框中的“类名”框内输入“Cardgame”。 请勿修改默认的文件名和设置。 选择“确定” 按钮。
Visual Studio 创建新的文件并将其添加到项目。 可以在“解决方案资源管理器”窗口中查看这些文件。 Cardgame.h 和 Cardgame.cpp 文件在编辑器中打开。
4、编辑 Cardgame.h 文件,并进行以下更改:
#pragma once
class Cardgame
{
int players;
static int totalParticipants;
public:
Cardgame(int players);
~Cardgame();
static int GetParticipants() { return totalParticipants; }
};
4、编辑 Cardgame.cpp 文件,并进行以下更改:
#include "Cardgame.h"
#include <iostream>
using namespace std;
int Cardgame::totalParticipants = 0;
Cardgame::Cardgame(int players)
: players(players)
{
totalParticipants += players;
cout << players << " players have started a new game. There are now "
<< totalParticipants << " players in total." << endl;
}
Cardgame::~Cardgame()
{
}
使用类
1、在 Game.cpp 编辑器窗口中,用下列代码替换现有代码:
// Game.cpp : Defines the entry point for the console application.
//
#include "pch.h" // remove this line in Visual Studio 2019
#include "Cardgame.h"
#include <iostream>
using namespace std;
void PlayGames()
{
Cardgame bridge(4);
Cardgame blackjack(8);
Cardgame solitaire(1);
Cardgame poker(5);
}
int main()
{
PlayGames();
return 0;
}
生成并运行此项目
1、在菜单栏上,依次选择“生成” > “生成解决方案”
2、运行项目:在菜单栏上选择“调试” > “开始执行(不调试)”。现象是:显示控制台窗口
其他
#pragma once
作用: 指定在编译源代码文件时编译器仅包含头文件一次。
说明:
- 使用
#pragma once
可以减少生成时间,因为编译器不会在翻译单元中的第一个文件之后打开并再次读取该文件 #include 。 这称为 " 多个包含优化"
// header.h
#pragma once
// Code placed here is included only once per translation unit
- 它的作用类似于 include guard 方法,该方法使用预处理器宏定义来防止多次包含文件内容
// header.h
// Demonstration of the #include guard idiom.
// Note that the defined symbol can be arbitrary.
#ifndef HEADER_H_ // equivalently, #if !defined HEADER_H_
#define HEADER_H_
// Code placed here is included only once per translation unit
#endif // HEADER_H_
- 建议对新代码使用 #pragma once 指令,因为它不会用预处理器符号污染全局命名空间。 它需要更少的键入,减少了混乱程度,并且不会导致 符号冲突,因此,当不同的标头文件使用与临界值相同的预处理器符号时,会导致错误。 它不是 c + + 标准的一部分,而是由多个常用编译器来实现移植。