C++学习路线,计划和根据实际情况的探索性实践,开篇

开始学习C++了,两年之前只是简单的了解过C++的基础语法知识,现在要认真的学习一下C++了,并写下此博客,为了证明我之前的学习新的语言的方法的正确性:
了解基础语法->进行算法题目练习,熟悉语法->进行语言深层次的学习,例如多线程,网络编程,内存方面等等
这次刚开始,我就感觉到了,以上只是一个大致的路线图,每个人有每个人不同的情况,比如学习时间是碎片化的还是整体化的,这一次,我的实际情况是学习时间碎片化居多,大多数时间在进行实习,要迅速掌握C++语言深层次的内容
所以我决定,再了解了基础的语法之后,直接进行C++深层次内容的学习,为什么跳过了熟悉语法这个阶段,因为语法的熟悉,需要花很长的一段时间,这是不可避免地,我决定,一边学习C++深层次的东西,一边每天做两道算法题,用C++进行解答,这样两边都不耽误。

可以在类里面进行函数的声明,然后在类的外面进行内容的填写,如下

class BOX
{
private:
	int width;
	int height;
	int length;

public:
	BOX(int w, int h, int l)
	{
		width = w;
		height = h;
		length = l;
	}

	int getArea()
	{
		return width * height * length;
	}

	//在类的内部进行函数的声明,加上作用域修饰符
	void speak();
};
//在函数外部进行函数体的写入,格式是
//修饰符 类名:函数名(){函数体}
//这一种的函数应该是public的吧,我也刚刚学,不是很清楚
void BOX::speak()
{
	cout << "我他妈来到这里了" << endl;
}



int main()
{
	BOX b(1, 2, 30);
	cout << b.getArea() << endl;
	cout << "hello world!" << endl;
	b.speak();
	return 0;
}

第二个不同,类的初始化列表进行列的初始化,使用方法如下所示

class BOX
{
private:
	int width;
	int height;
	int length;

public:
	//这里构造方法中进行列表形式的赋值
	BOX(int w, int h, int l) :width(w), height(h), length(l) {}
	BOX(int w, int h);
	int getArea()
	{
		return width * height * length;
	}

	void speak();
};

void BOX::speak()
{
	cout << "我他妈来到这里了" << endl;
}
//也可以在类的外部进行初始化
BOX::BOX(int w, int h) :width(w), height(h) {}

类的析构函数

  • 类的析构函数会在类销毁时进行,比如主线程结束了,里面所有的类都会进行销毁,这个时候就会调用类的析构函数
  • 析构函数的名称与类的名称完全一致,不返回任何值,也不传入任何参数
class BOX
{
private:
	int width;
	int height;
	int length;

public:

	BOX(int w, int h, int l) :width(w), height(h), length(l) {}
	~BOX();

	BOX(int w, int h);
	int getArea()
	{
		return width * height * length;
	}

	void speak();
};
//
void BOX::speak()
{
	cout << "我他妈来到这里了" << endl;
}
BOX::BOX(int w, int h) :width(w), height(h) {}
//析构函数
BOX::~BOX()
{
	cout << "BOX的析构函数执行" << endl;
}

拷贝构造函数

  • 通过使用另一个同类型的对象来初始化新创建的对象
  • 把对象作为参数传递给函数时,其实是调用了拷贝构造函数创建了一个新的对象传递进去
  • 函数返回对象时,也是用拷贝函数创建了一个新的对象来返回
    写法:
类名(const 类名 &变量名)
{
	//todo...
}
class BOX
{
private:
	int width;
	int height;
	int length;

public:

	BOX(int w, int h, int l) :width(w), height(h), length(l) {}
	~BOX();
	BOX(const BOX& b);

	BOX(int w, int h);
	int getArea()
	{
		return width * height * length;
	}

	void speak();
};

void BOX::speak()
{
	cout << "我他妈来到这里了" << endl;
}
BOX::BOX(int w, int h) :width(w), height(h) {}

BOX::~BOX()
{
	cout << "BOX的析构函数执行" << endl;
}

//拷贝构造函数
BOX::BOX(const BOX& b)
{
	cout << "拷贝构造函数执行了";
}

int main()
{

	BOX b(1,2,3);
	BOX c = b;
	return 0;
}

### 在多线程中,如果使用类进行新的类进行线程的创建的话,要写出特定的函数
写法如下:

	void 	operatot()()
	{
		//TODO...
	}
class TA
{
public:
	void operator()()
	{
		cout << "类线程开始了" << endl;
		cout << "类线程结束了" << endl;
	}
};


int main()
{
	TA ta;
	thread myThread(ta);
	myThread.join();
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值