开始学习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();
}