C++学习记录

1.C++中没有C#中所谓的引用类型和值类型,需要使用引用,或者指针操作对象,但是指针容易出错,为什么不用引用而用指针呢,下面给出总结

<1>引用在声明时必须初始化,指针可以是空指针,引用定义后就不能在指向其他对象了

      如果一个指针所指向的对象,需要用分支语句加以确定,或者在中途需要改变他所指的对象,那么在它初始化之后需要为他赋值,而引用只能在初始化时指定被引用的对象,所以不能胜任。

int b = 1;
int c = 2;
int & d = b;

<2>使用函数指针,由于没有函数引用,所以函数指针无法被引用替代。

<3>使用new创建的对象或数组,需要用指针来存储它的地址。

<4>数组其实就是指向第一个元素的指针,但是不能引用数组

//int & a[] = { 2 };  不允许使用引用的数组

 

2.inline限定符

在头文件中,可以对函数用inline限定符来告知编译器,这段函数非常的简单,可以直接嵌入到调用定义之处。

当然inline的函数并不一定会被编译器作为inline来实现,如果函数过于复杂,编译器也会拒绝inline。

因此简单说来,代码最好短到只有3-5行的才作为inline。有循环,分支,递归的函数都不要用做inline。

这么说吧,程序在编译器编译的时候,编译器将程序中出现的内联函数的调用表达式用内联函数的函数体进行替换,

而对于其他的函数,都是在运行时候才被替代。--------------------这其实就是个空间代价换时间的i节省

3.定义对象new与不new的区别,以及析构函数的作用

ClassA classA1(1);
ClassA* pClassB = new ClassA(2);

ClassA::~ClassA()
{
std::cout << "对象 " << this->ID << " 执行析构函数" << std::endl;
}

https://www.cnblogs.com/zhengfa-af/p/8109958.html

4.STL算法和数据分离,成员算法 , 全局算法

http://c.biancheng.net/view/7457.html

https://blog.csdn.net/weixin_39703605/article/details/108307851

5.全局变量,变量的定义与声明,重定义

https://www.cnblogs.com/stones-dream/p/9553843.html

6.C++常用语法知识

https://www.runoob.com/cplusplus/cpp-storage-classes.html

7.泛型编程中,关键字typename和class的区别,当有内部类的时候可能会造成错误

https://www.cnblogs.com/renyuan/p/6223527.html

8.tcp/udp     TCP为什么可靠,UDP如何实现可靠,二者区别?

https://blog.csdn.net/csdnlijingran/article/details/88385733

9.一个类占多少字节,类的字节对齐

https://www.cnblogs.com/weiyouqing/p/9642986.html

原文地址:https://www.cnblogs.com/white-L/p/11244985.html