以前学习自学完c++时,没有做笔记对自己的学习做一个记录,以至于自己学完c++转学完Python,在回过头来看C++发现自己还有许多地方都不是很清楚,今天开始,每天花上2个小时对自己以前的C++内容进行复习,并做好笔记记录,进行整理,以便后面再次复习。
一、类的访问控制
public:修饰成员变量和成员函数在类的内部和外部都可以进行访问。
protected:修饰类的成员变量和成员函数只能在类的内部和子类中进行访问。
private:修饰类的成员变量和成员函数只能在类的内部使用。
当一个当类的访问控制未声明时,默认为private。
二、类的构造函数
(一)两条基本准则:
1、定义一个类之后,c++编译器会自动为我们提供一个默认构造函数、但是一旦我们重写了构造函数之后、我们写的构造函数一定会被调用、编译器不再为我们提供默认构造函数。
2、类的构造函数在实例化一个对象时会被自动调用。
(二)类的构造函数的分类与调用
1、无参构造函数 2、有参构造 3、拷贝构造
#include<iostream>
using namespace std;
class Test
{
public:
Test()
{
cout << "我是无参构造函数" << endl;
}
Test(int a, int b)
{
this->a = a;
this->b = b;
cout << "我是有参构造函数" << endl;
}
Test(Test &item)
{
this->a = item.a;
this->b = item.b;
cout << "我是拷贝构造函数" << endl;
}
protected:
private:
int a;
int b;
};
int main()
{
Test t1; //调用无参构造函数
Test t2(1, 2); //调用有参构造函数
//这里本质是初始化法初始化不是等号赋值,等号赋值需要用到拷贝函数(深浅拷贝)
Test t3 = t2; //调用拷贝构造函数
Test t4(t3); //调用拷贝构造函数 //参数法初始化
system("pause");
}
输出:
我是无参构造函数
我是有参构造函数
我是拷贝构造函数
我是拷贝构造函数
请按任意键继续. . .
(三)类的对象做函数参数。
类的对象做函数参数时不会去调用类的构造函数,只有当将类的对象左为实参传递给形参的时候会去调用类的拷贝构造函数。
#include<iostream>
using namespace std;
class Test
{
public:
int a;
int b;
Test()
{
cout << "我是无参构造函数" << endl;
}
Test(int a, int b)
{
this->a = a;
this->b = b;
cout << "我是有参构造函数" << endl;
}
Test(Test &item)
{
this->a = item.a;
this->b = item.b;
cout << "我是拷贝构造函数" << endl;
}
prote