《C++大学教程》学习笔记(二、三)
2018-02-08 10:49
274 查看
《C++大学教程》学习笔记(二、三)
第二章太基础,唯一学到的就是#include也是预处理,之前一直疏忽了。下面是第三章。
1.类接口与实现的分离
良好的软件工程要做到成员函数对于客户代码是隐藏的(即信息隐藏),所以在第三章中书中对于GradeBook类给了这样一个实例:GradeBook.h:使用函数原型定义类的借口
GradeBook.cpp:在独立的源文件中实现成员函数
简而言之,就是把原来挤在一个源文件里的代码分离成下面这种样子:
很奇怪,当年上C++课的时候老师没怎么提这种做法,但做项目的时候参考别人的代码发现就是这么做的。
另外,尽管成员函数是在.cpp文件中实现的,但在main.cpp中仍然是#include “GradeBook.h”就可以了,因为在.cpp文件中每个成员函数都通过作用域分辨标识符(::)唯一的“捆绑”到了.h中的类定义上。
2.set与get函数
对于类中的数据成员,都应当有其对应的set与get函数。不仅如此,类中的其他成员函数也当使用get与set来访问数据成员(尽管它们能直接访问)。使用set函数还有一个好处就是可以确认数据的有效性。
3.getline与cin
getline属于头文件string,cin属于iostream。cin是读取字符直到遇到第一个空白间隔符
getline是读取连续字符直到遇到第一个换行符为止
getline函数的调用方式是getline(cin , string类型的变量);
4.一个包含构造函数的完整代码
GradeBook.h文件:#include <iostream> #include <string> using namespace std; class GradeBook{ private: string courseName; public: explicit GradeBook(string); void setCourseName(string); string getCourseName() const; void displayMessage() const ; };
GradeBook.cpp文件:
#include "GradeBook.h" GradeBook::GradeBook(string name){ setCourseName(name); } void GradeBook::setCourseName(string name){ if (name.size() <= 25) courseName = name; else{ courseName = name.substr(0,25); //复制子字符串:从下表0开始,长度为25 cerr << "More than 25!\n" ; //cerr用来输出错误信息 } } string GradeBook::getCourseName() const{ return courseName; } void GradeBook::displayMessage() const { cout << "Welcome to:" << getCourseName() << endl; }
main.cpp文件:
#include "GradeBook.h" int main(int argc, const char * argv[]) { GradeBook myGradeBook1("book 1asfqwqecqd qwd 2hsjssssssssqq"); GradeBook mygradeBook2("book 2"); myGradeBook1.displayMessage(); mygradeBook2.displayMessage(); myGradeBook1.setCourseName("book 1"); cout << "\nAfter setting...\n\n"; myGradeBook1.displayMessage(); mygradeBook2.displayMessage(); return 0; }
相关文章推荐
- 《C++大学教程》学习笔记 第四章:控制语句(第一部分)
- 《C++大学教程》学习笔记(四)
- 《C++大学教程》学习笔记(十五)
- 《C++大学教程》学习笔记 第五章:控制语句(第二部分)
- 《C++大学教程》学习笔记(九)
- 《C++大学教程》学习笔记(十)
- 《C++大学教程》学习笔记 第二章:C++编程入门
- 《C++大学教程》学习笔记(十一)
- 《C++大学教程》学习笔记(十二)
- 《C++大学教程》学习笔记(五)
- 《C++大学教程》学习笔记(一)
- 《C++大学教程》学习笔记(六)
- 《C++大学教程》学习笔记(七)
- 《C++大学教程》学习笔记(十六)
- 《C++大学教程》学习笔记(八)
- 《C++大学教程》学习笔记(十四)
- 学习笔记:解读CppUnit源码4
- 《CLR via C#》学习笔记【1】
- 关于JS在IE和FF下attachEvent,addEventListener学习笔记
- 通过反射查看类信息 学习笔记