Welcome to Changhe Li's Teaching Page


About Me News Research Teaching Publications OFEC Downloads Funding Links

Module: Programming in C, Programming in C++, The principle of Operating System, Artificial Intelligence


This page is used to distribute teaching materials and news for the module Programming in C++.

Anouncements

此课程不是C语言课程,所以只能由计算机学院计算机科学与技术专业学生选修,其它专业学生不能选择此课程

The final score will be performance(attandence, homework, lab) + module project.

Textbook: 吴乃陵,况迎辉. C++程序设计(第二版). 高等教育出版社,2006年1月

课本中的警告(warnings)和错误(errors):

Warnings:

  1. 课本中关于变量、对象、类和函数的声明(课本上是"说明")和定义有多处混淆,如p11... 请认真阅读,参考第一章ppt有关声明和定义的区别
  2. 14页:只要有一个操作数是实数,两个操作数均转换为double型-->此规则是C语言规则, 按照ISO 2003 C++标准:不同类型的操作数进行运算时,将表示范围小的类型操作数转换为表示范围大的类型(请参考《C++ Primer Plus》 第六版 英文版 Stephen Prata 著 第106页)
  3. 20页:操作数为单精度是,系统自动将其转换为双精度--> 准确:按照表示范围小的类型向表示范围大的类型转换(删除该描述)
  4. 20页图1.2--> 将unsigned long 和long 的箭头指向 double
  5. 45页例2.12: a<0的情况没有考虑;
  6. 125页 当函数形参是类的对象-->当函数的形参是非引用类型(同下关于返回值的描述);
  7. 关于strcpy()error 或warning 的解决办法。 此错误/警告如下: warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. 次警告只有在VS Studio编译环境下才有。 可以add _CRT_SECURE_NO_WARNINGS symbol to your project settings via "Project"->"Properties"->"Configuration properties"->"C/C++"->"Preprocessor"->"Preprocessor definitions". 或者 go to Project -> Properties -> Configuration properties -> C/C++ -> Advanced -> Disable specific warning add the value 4996;

Errors:

  1. 62页 ifile和ofile分别为文件输入流和输出流对象,而不是文件名
  2. 85页 函数声明和定义 at(); st(); ---> int at(); int st(); 在VC6.0中课本中的代码虽能通过编译,这是早期的一个不标准的语法(未指定函数返回值默认为整型),已不符合C++11标准。(发现者:2013级学生 樊润宇)
  3. 121页图4.4内存地址00FF:58AB-->00FF 58AB
  4. 123页, 对数组只能引用数组元素,不能引用数组(数组名本身为地址):这是错误的,如 int a[10]={1,2,3}; 可定义数组a的一个引用 int (&b)[10]=a;
  5. 124页 Price=cgd.price; ---> Price=cgd.Price;
  6. 132页 图4.8,对象c3-->形式参数c;c3.Real-->c.Real;c3.image-->c.Image
  7. 187页 在程序运行 ---> 在程序编译
  8. 193页 return i<0||i>last?exit(1):slist[i];---> return i<0||i>last? 0:slist[i];
  9. 215页 也可以用对象代替类来进行初始化,效果是一样的--->编译错误,只能用类名::成员函数名方式来初始化指向成员函数指针。错误信息: Linux: GNU C++ error: ISO C++ forbids taking the address of a bound member function to form a pointer to member function. Windows:VS2012: error C2276: '&' : illegal operation on bound member function expression
  10. 215页 指向成员函数的指针初始化必须用类成员函数名前加&方式初始化,不能用隐式的初始化方式,正确的初始化如下 float (CGoods::*pf)()=& CGoods::GetPrice;
  11. 221页 第三,没有对应的初始化式,不可对数组进行初始化 ---> 可以初始化为默认值。 例:int *pi=new int[5](); //pi->数组元素具有默认值0
  12. 275页 作用域操作符和成员操作符使用有误,EGStud1.GStudent.Student::No --> EGStud1.GStudent::Student::No; EGStud1.GStudent.Student.Person::No -->EGStud1.GStudent::Student::Person::No; EGStud1.Employee.Person::No-->EGStud1.Employee::Person::No
  13. 276页 作用域分辨符是不能嵌套使用的 ---> 是可以嵌套使用的
  14. 279页 否则编译器认为出错 ---> 编译器不会认为出错,只是调用默认的构造函数而已, 所以一般建议显式指出所调用的虚基类的构造函数

Lab:

Timetable

Session Week Day Section Room Note
Lecture 4-14 Monday 3-4 教三楼603  
Lecture 10-17 Wednesday 3-4 教三楼603  
Compt Lab 7、9、11、13 Tuesday 晚上6:30 信息楼206  
课程设计上

 

 

  题目和报告撰写要求
寒假作业

新闻管理系统

  题目和要求
C++ 下 结课报告       报告要求
课程设计下  

 

  题目和报告撰写要求

 

Slides:

Chapter Title Worksheet/Answer Slide
1 Introduction of programming and C++ language 课下练习题目 Download
2 Algorithms and statements Download
3 Function   Download
4 Classes and Objects   Download
5 Array and Pointer   Download
复习 Review   Download
6 Template Download
7 Dynamic Memory Allocation   Download
8 Inheritance and Polymorphism   Download
9 Standard Template Library   Download
10 C++ 11   Download
11 Exception   Download
12 Effective C++   Download
13 Qt Programming   Download
14 String and vector   Download

实验考察题目

1. Visual C++集成开发环境入门:练习1练习2 2. 简单的C++程序设计

3. 分支程序设计 4. 循环程序设计 5. 常用算法 6. 文件读写

7. 函数基本概念 8 .递归程序设计 9. 函数的重载和变量的作用域

10.类与对象基本概念 11. 拷贝构造函数与引用 12.运算符重载

13. 多维数组 14. 数组和指针 15 模板 16 动态内存分配与深复制

17. 继承和派生 18. 虚函数与多态 19. 粒子群算法求解函数优化问题

考核标准:程序基本结构和功能60%+程序安全性(逻辑错误、内存溢出和测试错误等)20%+程序效率(指针、引用、临时对象、算法的时间和空间复杂度等)15%+程序界面5%

Usful links:

ACM @ CUG: http://acm.cug.edu.cn/JudgeOnline/

C++语言创始人Bjarne Stroustrup 个人主页: http://www.stroustrup.com/

C++程序设计推荐电子书籍1. (More) Effective C++ 2. Exceptional C++ 3. Modern_C++_Design

Qt 程序开发范例

开发工具

Microsoft Visual Studio Community 2015 is free at https://www.microsoft.com/zh-CN/download/details.aspx?id=48146

Qt 5 Download: http://www.qt.io/download/

OpenFrameworks: http://openframeworks.cc/about/