c++语言知识点总结二

一、引用的应用。

在c++中既能用引用又能用指针的地方尽量用引用。

用引用传递参数的时候,我们时常使用const来修饰,来避免参数被意外的修改。

千万不要返回对局部变量的引用,因为局部变量会随着局部代码执行完成后被销毁,当然静态局部变量和动态分配的局部变量是特例。

二、c++的四种类型转换

1.static_cast<类型>() 静态类型转换,在编译的时候进行,一般在一个方向上可以做隐式类型转换的话,那么在另一个方向上一般做静态类型转换。

如void*到任意类型的转换。

2.dynamic_cast<类型>() 动态类型转换,一般用于子类向父类的转换

3.reinterprect_cast<类型>()重解释类型转换,可用于任意类型之间的转换,除非必要,一般不建议使用。如可以把整数强转为指针,很霸道吧。

4.const_cast<类型>()这就是常说的去常,如一般好多的类中需要重载两个赋值运算符函数,一个const类型的,一个不带const类型的,带const类型的可以用const_cast<this>->m_member = that.m_member.

三、成员函数指针和成员变量指针

成员函数指针的声明方法:函数返回值类型 类名::*p = 对象.成员函数()/该类类型的指针->成员函数()

成员变量指针的声明方法:函数返回值类型 类名::*p = 对象.成员变量/该类类型的指针->成员变量

该类型的成员函数指针可以指向该类中的任意一个成员函数,同理,该类型的成员变量指针也可以指向该类中的任意一个成员变量。成员指针如果用作函数形参具有很好的效果。

使用方法。下面举一个简单的例子,都是汉字太过抽象。

Class A{

int m_a;

int m_b;

void foo1();

void foo2();

};

A a;

A* pa = &a;

int A::*p = a.m_b; 或int A::*p = pa->m_a; //该句定义了一个指向a对象的成员变量m_b的成员变量指针。

p = a.m_b;或p = pa->m_b//该句定义了一个指向a对象的成员变量m_b的成员变量指针。

void A::*p1 = a.foo1();或void A::*p1 = pa->foo1();//该句定义了一个指向a对象的成员函数foo1()的成员函数指针。

p1 = a.foo2();或p1 = pa->foo2();//该句定义了一个指向a对象的成员函数foo2()的成员函数指针。

五、什么是面向对象

万物皆对象

以下为鄙人拙见,如高手视之,请一笑而过。

就以c++为例来说明一下面向对象分析问题的过程

当我们要通过程序来编写一个现实的对象的时候,我们先把许多相同的这种对象抽象成一个类,然后由这个类来派生对象。打个比方,类有点像是一种对象的图纸,当我们需要这种对象的时候就按这个图纸造一个,图纸是不需要耗费材料的,只有当实际制造的时候才会用各种材料。同理类是基本不占内存的(在c++中类占一个字节),只有当我们产生实际的对象的时候才会为对象分配内存,并调用构造函数初始化。

然后不同的类能产生不同的对象,不同的对象相互“交流”,互相合作就构成了我们的程序,就好像时间万物各自分工一样。

六、构造函数

创建实例化对象的时候会调用构造函数

构造函数的初始化步骤:

1)分配内存空间

2)初始化成员变量,如果成员变量为对象则调用该对象的构造函数,总之遇对象则构造。

3)调用构造函数

如果程序员没有在类中显示的写出构造函数,则系统会提供一个默认的无参构造函数,创建对象的时候调用该无参构造函数。

构造函数和普通函数一样可以构成重载。

构造函数没有返回类型 如  A(){}  此即为类A的无参构造函数 A之前切不可加类型修饰符。

相对应的析构函数为        ~A(){}

今天就先写到这里,明天继续。。。

 

 

 

原文链接: https://www.cnblogs.com/fighting-liucl/archive/2013/04/06/3001834.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

    c++语言知识点总结二

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/83441

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月9日 下午9:05
下一篇 2023年2月9日 下午9:05

相关推荐