您的位置:首页 > 编程语言 > C语言/C++

c++_初始化里列表_多态_动态分配_struct_引用

2018-02-03 04:11 239 查看

初始化列表

1: 对象实例化的时候,在调用构造函数之前,先按照初始化列表初始化成员,然后再进入

构造函数的执行;

2: 初始化列表的格式:

构造函数():
a(0), b(3.5), c(4.6) {}


初始化列表

对象分配内存的时候,在执行构造函数之前来对成员进行初始化;

构造函数后面:每个变量初始化,称为初始化列表;



多态

1: 同一个函数名字不同的参数,这个我们称为”多态”;

2: 成员函数多态;

3: 构造函数多态: 实例化的时候,根据参数来选取不同的构造函数;

4: 析构函数没有多态;

5: 多态: 函数是根据名字来判断的,返回值是不受影响的,比如

int test_func()
void test_func()
是不能同时存在的,不属于多态

函数名字相同,参数不一样称之为多态;

多态:

其实是俩个函数,只是在调用的时候,根据用户传递的参数来选择版本;



同一个名字,同样的参数,不同的返回值是否多态呢? 不是,报错;

返回值不能决定多态,编译器无法找到正确的版本,编译器具有二异性,只能报错;



构造函数也可以多态:实例化的时候,根据参数来选取不同的构造函数



析构函数没有多态;

-

C++ 动态内存分配

##

1: 在堆上分配一个
C++
的对象实例

(1)分配内存

(2)调用构造函数

2: 使用
new
在堆上来分配:

new
数据类型(基本数据类型,类)

new
数组类型[数组个数];

3: 使用
delete
来释放动态内存;

如果是数组要加上
delete []
;

如果你
new
的是一个实例
delete
指针

如果你
new
的是一个数组
delete[]
指针

4:你
new
一个对象,你要考虑这个对象在什么时候
delete
,才不会有内存泄漏;

在堆上分配一个类的实例;

step1
:分配内存;

step2
:调用构造函数;

c/++
里面使用
new
来做动态内存分配;

使用
delete
来释放动态内存;

step1
:调用析构函数;

step2
:把内存还给操作系统;

new
一个对象时,要考虑什么时候
delete
,才不会内存泄露;



New
1000个
int
的数组

step1
:调用每个元素的析构函数;

step2
:把内存还给操作系统;



分配10个
homan




c++的
struct
结构体

1:
C++
struct
兼容
C
语言的;

2:
struct
也是一个类,所以也可以加入成员函数,不过
struct
默认的权限是
public
,和
class
这点不一样;

3: 具备类的特点,还能够兼容C的语法;

struct
就是一个类;

兼容c的语法;

struct
中如果没有指定权限,默认就是
public
,这就是与
class
的区别

类里面的其它属性,都适合于
struct




-

引用类型

1:
C++
有一个新的数据类型,引用类型;

2: 引用是对象内存的”别名”,使用这个别名也能访问对应的内存对象;

3:
C
语言要修改内存可以传指针,
C++
要修改内存可以传递变量地址,和变量引用;

变量的别名叫做引用,是一种数据类型;

定义一个引用:xxxx的引用 变量;

跟对应类的大小是一样的,

引用变量是内存的别名,;

s_link
s
的别名,代表的是同一块内存



没有办法独立一个变量;

指针与引用传递的区别;



引用的本质,和变量是同一块内存,只是这块内存的另外名字;

操作内存即可传引用,也可传指针,但引用不会发生实例化的重新拷贝;



传引用比较高效

总结

1: 掌握
c++
初始化列表;

2: 掌握
c++
的多态,和构造函数多态;

3: 掌握
c++ new/delete
;

4: 掌握
struct


5: 掌握
C++
的引用数据类型;

–》源代码
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  struct