参考《C++ Primer第4版》(中文版)
1. 引用符号&只能出现在=的左边:int a = 9; int &b = a;
引用只是绑定的对象的别名:对于上面的 b+=2; 则a==2为真,当然b==2也为真。
注意:const引用是指向const的引用,非const引用只能指向非const类型的引用。
const 也可以指向非const的对象
2. typedef定义类型
typedef double wages; //则以后可以用wages定义double类型的变量
wages hourly; //等价于doublehourly
作用:为了隐藏特定类型的实现,强调使用类型的目的
简化复杂的类型定义,更易理解
允许一种类型用于多个目的,同时使得每次使用该类型的目的明确
3. 枚举 enum关键字定义。如果不赋值则默认第一个为0,后面的依次比前面的大1.
初始化枚举成员的值必须是一个常量表达式(编译时能够就算出结果的整型表达式,整型字面值也是常量表达式)。
enum Forms{ shape = 1, sphere, cylinder, polygon};(切记不要丢分号)
4. 类类型 class包括数据成员和成员函数
访问标号控制类的成员在类外部是否可以访问。
public 类外部可以访问的公有成员;private类外部不可访问的私有成员
protected 仅仅派生类可以继承访问的成员
5. 注意:C++支持struct定义类类型。仅仅影响默认访问权限
Class默认private访问权限,struct默认public访问权限
6. 头文件.h
用于声明而不是用于定义,所以不应该包含变量和函数的定义
一些const对象定义在头文件中(常量)。如果const变量不是用常量表达式初始化,那么就不应该在头文件中定义。而应该和其他变量一样定义并初始化在一个源文件中。应在头文件中extern声明,以使多个文件共享。
7. 头文件经常需要其他头文件
避免多重包含:使用预处理器变量两种状态:#ifndef #define #endif
昨日三题解答
1.使用递归函数,求99+97+95+...+3+1之和。(答案:2500)
#include <iostream>
using namespace std;
int sum(long n,long m)
{
if(n==m)
return(m);
else
return(m+sum(n,m-2));
}
void main()
{
int n,m;
cout<<"输入范围:(n~m):"<<endl;
cout<<"n="; cin>>n;
cout<<"m=";
cin>>m;
cout<<"从"<<n<<"到"<<m<<"的和为:"<<sum(n,m)<<endl;
}
2.写出加法计算的多个重载函数(int和double类型参数重载、两个数和一组数相加)
/**
*名称:C++Review
*作者:TskyFree
*时间:2012年7月
*/
#include <iostream>
using namespace std;
int add(int num1,int num2);
double add(double num1,double num2);
double add(int count,double nums[]);
int main(void)
{
int num1 = 0;
int num2 = 0;
double num3 = 0;
double num4 = 0;
int sum = 0;
cout <<"请输入两个整数";
cin >> num1>> num2;
cout <<num1 << "+" << num2<<"=" <<add(num1,num2) << endl;
cout <<"请输入两个小数";
cin >> num3>> num4;
cout <<num3 << "+" << num4<<"=" <<add(num3,num4) << endl;
double nums[5] ={0};
cout <<"请输入5个数:";
for(int i = 0;i< 5;++i)
cin>>nums[i];
cout <<"本组数的和为:"<<add(5,nums)<< endl;
system("pause");
return 0;
}
int add(int num1,int num2)
{
return num1+num2;
}
double add(double num1,double num2)
{
return num1+num2;
}
double add(int count,double nums[])
{
double sum = 0;
for(int i = 0;i< count;++i)
sum +=nums[i];
return sum;
}
3.职工类设计(class Staff)
数据成员: ID号、姓名、性别、年龄、部门、薪水
成员函数:构造函数、析构函数、查看职工信息、部门调整、薪水更改。
class Staff
{
public:
Staff(intaId,string aName,char aGender,int aOld,string aDep,int aSalary)
{
m_id = aId;
m_name =aName;
m_gender =aGender;
m_department =aDep;
m_salary =aSalary;
}
~Staff()
{
}
voiddisplayMessage()
{
cout<<"\n员工信息"<<endl
<<"ID:"<<m_id<<endl
<<"姓名:"<<m_name<<endl
<<"性别:"<<m_gender<<endl
<<"部门:"<<m_department<<endl
<<"薪水:"<<m_salary<<endl;
}
voidchangeDepartment(string newDepartment)
{
m_department =newDepartment;
}
voidchageSalary(int newSalary)
{
m_salary =newSalary;
}
private:
int m_id;
string m_name;
char m_gender;
int m_old;
stringm_department;
int m_salary;
};