//类包含函数与数据
//对象:一个特定"类"的具体实例
/*
构造函数的作用:
在创建一个新的对象时,自动调用的函数,用来进行"初始化"工作:对这个对象内部的数据成员进行初始化
构造函数的特点:
1 自动调用(在创建新对象时,自动调用)
2构造函数的函数名,和类名相同
3构造函数没有返回类型
4可以有多个构造函数(即函数重载形式)
构造函数种类:
默认构造函数
自定义的构造函数
拷贝构造函数
赋值构造函数
什么时候调用拷贝构造函数:
1调用函数时,实参是对象,形参不是引用类型
如果函数的形参是引用类型,就不会调用拷贝构造函数
2函数的返回类型是类,而且不是引用类型
3对象数组的初始化列表中,使用对象
默认构造函数:没有参数的构造函数
合成默认构造函数
自定义默认构成函数 // Human(int a,int b)
(如果某数据成员使用类内初始值,同时又在构造函数中进行了初始化,那么以构造函数中的初始化为准. 相当于构造函数中的初始化会覆盖对应类内的初始值)
拷贝构造函数
1 手动定义的拷贝构造函数 // Human(const Human&);
2默认拷贝构造函数
(合成的拷贝构造函数的缺点:使用"位拷贝/浅拷贝")
赋值构造函数 //Human&operator=(const Human&)
3.解析构造函数
~Human(); //释放内存(1不能自己调用 2对象销毁时,自动调用 3如果不调用,编译器会自动生成一个析构函数(什么也不做) )
1静态数据成员
所有的成员函数,都可以访问静态数据成员
2静态成员函数
对象可以直接访问静态成员函数
类可以直接访问静态成员函数
类的static方法内,不能调用这个类的非static方法(实例方法),类的static方法内,不能访问非static数据成员(实例数据成员)
(stati) 在类的静态成员函数(类的静态方法)内部,不能直接访问this指针和对象的数据成员,只能访问类的数据成员//公共部分无法确定哪一个对象
const:c++认为,const(常量)对象,如果允许去调用普通的成员函数,而这个成员函数内部可能会修改这个对象的数据成员!而这将导致const对象不再是 const对象
自由引用对象:void test(Man&man);可以引用自由对象(非const),不能引用const对象
const引用对象:void test(const Man&man);可以引用自由对象与const对象
const 常量vector向量,矢量
*/
#include <iostream>
#include <Windows.h>
#include <string>
#include <string.h>
#include"Human.h"
using namespace std;
void test() {
Human h1;
Human h2;
}
void showCount() {
cout << Human::getCount();
}
int main(void) {
//Human h1(25, 35000); // 使用自定义的默认构造函数
//Human h2(28, 40000);
//getBetterMan(h1, h2);//返回一个临时对象,调用拷贝构造函数
// Human f1, f2, f3, f4;
// Human F4[4] = { f1,f2,f3,f4 };//调用拷贝构造函数
// h1.compare1(h2).description();
const Human li;
li.description();
system("pause");
return 0;
}使用引用可以让执行效率更高。
引用就是不复制原来的对象,string里面会保存很多数据,每次都复制的话就浪费时间。
没必要拷贝的地方就不要拷贝,直接引用。