1. 前言
前一阵买了这本《C++大学教程(第九版)》,一直没有看过。
直到这几天导师有事,MATLAB仿真没有头绪,才有空打开这本书回头仔细看看。
将期间遇到的问题和测试的部分代码给出。
第三章类这一部分,靠着之前自学Python时对类的部分理解,正式看完。
2. VS使用遇到的各类问题
1. 无法查找或打开 PDB 文件
见参考链接1.
1.【工具】->【选项】->【调试】->【常规]】勾选“启用源服务器支持”
2.【工具】->【选项】->【调试】->【符号】,勾选“Microsoft符号服务器”
2. VS调试关闭显示“已加载符号”等信息
见参考链接2.
工具–>选项–>调试–>输出窗口–>模块加载消息,在后面的选项中关闭即可。
3. VS运行完程序后迅速关闭窗口
见参考链接3.
{
... ...
system("pause");
}
system()作用为从系统中调用功能,而system(“pause”)则为从系统中调用pause功能,在命令行上输出一行类似于“Press any key to exit”或“请按任意键继续…”的字,等待用户按一个键,然后返回。
4. 解决方案(solution)和工程(project)命名时有何不同
见参考链接4.
实际上在使用VS进行开发时,很重要的一点是明白解决方案和工程之间的区别。
本质上来说,解决方案是多个工程的集合(每个工程是一个独立的软件模块,比如一个程序、一个代码库等)。
这样的好处是解决方案可以共享文件和代码库。通常,为解决方案创建一个主文件夹,里面包含所有的工程文件夹。但是,也可以将解决方案和工程放在同一个文件夹内,这对于仅包含单个工程的解决方案来说是惯例。我们一般也是这样用。实际上创建更多复杂的应用之后,应该使用包含多个工程的解决方案结构。
5. VS中输入提示不按上下键选择直接按enter键确定
直接输入候选项的快捷键是:Ctrl + Enter
6. VS快速注释多行以及取消
见参考链接5.
快速注释多行:Ctrl +K 然后 Ctrl + C
快速取消多行注释 :Ctrl + K 然后 Ctrl +U
7. 头文件不应该包含using指令或者using声明
见参考链接6.
我们经常在头文件中使用namespace。但这样的结果就是,这个头文件会被其他的文件所包含。那么如果那个文件也用了namespace所指定的命名空间,这并不是我们所期望的,可能导致冲突。
8. VS的一些调试方法技巧
见参考链接7.
3. 第三章部分代码解释及练习
本书源码见参考链接8.
3.1 构造函数的初始化–GradeBook类
3.1.1 默认构造函数
课程名courseName
为空串:类string的默认构造函数将这个类对象的值设置为空串
输出为:
gradeBook1
gradeBook2
3.1.2 显式定义构造函数
书上部分代码如下:
# include <iostream>
# include <string>
using namespace std;
class GradeBook
{
public:
explicit GradeBook(string name)
: courseName(name)
{
}
... ...
};
int main()
{
GradeBook gradeBook1("CS101 Introduction");
GradeBook gradeBook2("CS102 Data");
... ...
system("pause");
}
用构造函数初始化GradeBook对象,输出如下:
gradeBook1 CS101 Introduction
gradeBook2 CS102 Data
3.2 练习题3.12 Account类
看完了 3.7 接口与实现的分离 这一节,以课后题3.12练手,代码如下:
3.2.1 定义Account类的头文件Account.h
class Account
{
public:
explicit Account(float);
void setAccountNum(float);
float credit(float);
float debit(float);
float getBalance();
private:
float accountNum;
};
3.2.2 定义Account成员函数的源代码文件Account.cpp
# include <iostream>
# include "Account.h"
using namespace std;
Account::Account(float num)
: accountNum(num)
{
setAccountNum(num);
}
void Account::setAccountNum(float num)
{
if (num >= 0)
accountNum = num;
if (num < 0)
{
accountNum = 0;
cerr << "Number \"" << num << "\" is invalid.\n" << endl;
}
}
float Account::credit(float num)
{
accountNum += num;
return accountNum;
}
float Account::debit(float num)
{
if (accountNum >= num)
accountNum -= num;
else if (accountNum < num)
cerr << "Debit amount exceeded account balance.\n" << endl;
return accountNum;
}
float Account::getBalance()
{
return accountNum;
}
3.2.3 测试Account类test.cpp
# include <iostream>
# include "Account.h"
using namespace std;
int main()
{
Account account1(1500);
Account account2(-10);
account1.credit(1000);
cout << "The amount of your account is " << account1.getBalance() << " now.\n" << endl;
account1.debit(1500);
cout << "The amount of your account is " << account1.getBalance() << " now.\n" << endl;
account1.debit(1500);
cout << "The amount of your account is " << account1.getBalance() << " now.\n" << endl;
system("pause");
}
输出如下:
Number "-10" is invalid.
The amount of your account is 2500 now.
The amount of your account is 1000 now.
Debit amount exceeded account balance.
The amount of your account is 1000 now.
4. 结语
这几天比较悠闲,就学点C++,项目可能也能用得到。
下次更C++部分还不知道是何时。
再次感谢成都念哥推荐的《C++大学教程(第九版)》,书中的编程提示提高了我的编程素养。
课后题3.12刚开始我还真没看得起,直到自己编起来,差点编崩了。
编程还是得自己做做练习题,只是看书真的啥也不会。
控制男转型,未来路漫漫。
个人水平有限,有问题欢迎各位大神批评指正!
参考链接
- VS2013 ConsoleApplication1.exe”(Win32):无法查找或打开 PDB 文件。
https://blog.csdn.net/qq_38410428/article/details/102720550 - VS2012显示“已加载符号”等调试信息的关闭方法
https://blog.csdn.net/weihldlfu/article/details/81836968 - C++ (1)如何避免VS2017运行完程序后迅速关闭窗口
https://blog.csdn.net/to2035/article/details/81146321 - 区分VS中解决方案(solution)和工程(project)
https://blog.csdn.net/autocyz/article/details/42238341 - VS快速注释多行 以及 取消
https://blog.csdn.net/CSDN___CSDN/article/details/84834857 - 头文件的包含以及命名空间的引入尽量写在cpp里
https://blog.csdn.net/u012234115/article/details/40019945 - VS2017的一些调试方法技巧
https://www.cnblogs.com/didiaodidiao/p/9187024.html - C++ How to Program
http://www.deitel.com/Books/C/CHowtoProgram9e/tabid/3644/Default.aspx