C++笔记
一:循环语句
1、if语句
- while循环
- do while 语句
%:取余数;/:取商
- for语句
- 嵌套循环
二、函数
1、函数定义:将一个模块的算法用C++描述出来。
函数的参数:计算所需条件
函数返回值:需要返回的计算结果
2、函数调用
调用之前要先声明
Static_cast: 一般用来将枚举类型转换成整型,或者整型转换成浮点型。也可以用来将指向父类的指针转换成指向子类的指针。做这些转换前,你必须确定要转换的数据确实是目标类型的数据,因为static_cast不做运行时的类型检查以保证转换的安全性
用法:static_cast < type-id > ( expression )
函数调用例题1
例题2
注:int 分为无符号 unsigned 和有符号 signed 两种类型,默认为signed。二者的区别就是无符号类型能保存2倍于有符号类型的数据。
Bool:布尔类型
3、函数嵌套调用
例题1:
- 函数的递归调用
- 函数参数调用
- 引用类型
- 含有可变参数的函数
- 内联(inline)函数
- constexpr函数语法规定
- 函数重载
定义:C++允许功能相近的函数在相同的作用域内以相同函数名声明,从而形成重载,方便使用,便于记忆。
11.C++系统函数
三:类和对象
- 定义:类是同一类对象的抽象,对象是类的实例
设计类
- 类的语法形式
类成员的访问控制形式:
公有类型、私有类型、保护类型
- 对象的语法形式
类中成员直接使用成员名互相访问
从类外访问成员使用“对象名.成员名”的方式访问public成员。
- 类的成员函数
例题
注:1、写类时后面应该标;上述截图中没有
2、当在类外对类的成员函数进行函数功能补充时要用类名加上::(作用域限定符号)
- 构造函数:构造函数在对象创建时被自动调用。
例如:Clock myClock(0,0,0)
构造函数的例题
- 委托构造函数
- 复制构造函数(拷贝构造函数)
注:const 限定的作用:常引用,意思是只能读数据,不能修改。
- 类组合的构造函数设计
例题1:
#include<iostream>
#include<cstring>
using namespace std;
class Product
{
private:
const char *name;
int price;
int quantity;
public://这里面需要有一些函数
Product(const char *n, int p, int q);
~Product();
void buy(int money);
void get()const;
};
Product::Product(const char *n, int p, int q)
{
name = n;
price = p;
quantity = q;
}
Product::~Product()
{
}
void Product::buy(int money)
{
int r, n;
n = money / price;
r = money % price;
if (n > quantity)
{
cout << "数量不够" << endl;
}
else
{
quantity -= n;
cout << "名称:" << name << ",单价:" << price << "元" << endl;
cout << "顾客使用" << money << "元,购买" << n << "台,剩余" << r << "元" << endl;
}
}
void Product::get()const
{
cout << "产品:" << name << ",单价:" << price << ",剩余:" << quantity << "台" << endl;
}
int main()
{
Product p("Iphone6", 100, 20);
p.buy(10);
p.get();
cout << "\n==========================\n" << endl;
p.buy(1000);
p.get();
return 0;
}
例题2、【明天加上报错信息】
#include<iostream>
using namespace std;
class CData
{
public:
CData(int y,int m,int d);
void setdate(int y, int m, int d);
void display();
void add();
private:
int day;
int month;
int year;
};
CData::CData(int y,int m,int d)
{
day = d;
month = m;
year = y;
}
void CData::setdate(int y,int m,int d)
{
day = d;
month = m;
year = y;
}
void CData::display()
{
cout<<day<<"/"<<month<<"/"<<year<<endl;
}
void CData::add()
{
int a[2][12]={
{31,28,31,30,31,30,31,31,30,31,30,31},
{31,29,31,30,31,30,31,31,30,31,30,31}
};
if((year%400 == 0)||(year%100 !=0 && year%4 ==0))//闰年的情况
{
if(a[1][month-1]>day)day++;
else
{
month++;
if(month>12)
{
year++;
month = 1;
}
day = 1;
}
}
else //平年的情况
{
if(a[0][month-1]>day)day++;
else
{
month++;
if(month>12)
{
year++;
month = 1;
}
day = 1;
}
}
}
int main()
{
CData date(2013,12,31);
date.display();
date.add();
date.display();
date.setdate(2014,11,11);
date.display();
date.add();
date.display();
return 0;
}