【北京大学C++程序设计学习】——菜鸟的基础过关——类和对象

写在前面

通过第一单元的梳理后现在觉得基本的框架是有了,也清晰了很多!加油,东西是死的,人是活的!

1.内联成员函数和重载成员函数

  • 内敛成员函数:
    (1)两种定义方式:第一种用inline进行申明,放在类内,具体的实现放在类外,另外一种是将整个函数体放在类定义内部
    在这里插入图片描述

  • 重载成员函数:
    函数名字想通但是类型或者参数不一样!那就是重载了!

2. 构造函数

(1)一些概念:

  • 对象需要被初始化之后再被使用!
    然后关于构造函数,名字和类一毛一样,但是没有返回值,没有类型!
(2)属于成员函数的一种
 **名字与类名相同**,可以有参数,**不能有返回值**(void也不行)
 作用是对对象进行初始化,如给成员变量赋初值
 如果定义类时没写构造函数,则编译器生成一个默认的无参数的构造函数
•默认构造函数无参数,不做任何操作

从上面观察到就构造函数而言,需要理解这几个字:对对象初始化,没有返回值


 如果定义了构造函数,则编译器不生成默认的无参数的构造函数
 对象生成时构造函数自动被调用。对象一旦生成,就再也不能在其上执行构造函数
一个类可以有多个构造函数

(3)需要构造函数的原因:主要就是初始化!

1) 构造函数执行必要的初始化工作,有了构造函数,就不必专门再写初始化函数,也不用担心忘记调用初始化函数。 
2) 有时对象没被初始化就使用,会导致程序出错。

关于构造函数最好是利用视频课程里面的那些代码例子来加深理解,这里就不多做介绍了,只是从概念上过一遍!

3.复制构造函数

copy constructor 也叫作拷贝构造函数
在这里插入图片描述

下面是例子, c2就是c1的一个复制品!

class Complex {
private :
double real,imag;
};
Complex c1; //调用缺省无参构造函数
Complex c2(c1);//调用缺省的复制构造函数,将 c2 初始化成和c1一样

复制构造函数起作用的三种情况:

  • 1)当用一个对象去初始化同类的另一个对象时。下面二者等价!
    Complex c2(c1);
    Complex c2 = c1; //初始化语句,非赋值语句
  • 2)如果某函数有一个参数是类 A 的对象, 那么该函数被调用时,类A的复制构造函数将被调用。
class A {
 		public: 
 		A() { }; 
 		A( A & a) {
 			 cout << "Copy constructor called" <<endl; 
 			 }
  };


自己写复制构造函数的原因!

4.类型转换构造函数

在这里插入图片描述
还是构造函数的调用!
感觉这些东西都是经常被笔试的过程中考过的!

5. 析构函数

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在面向对象的编程中,C语言并不直接支持类和抽象的概念。引用中提到,final关键字用来修饰方法,表示该方法不能在子类中被覆盖。而abstract关键字用来修饰抽象方法,表示该方法必须在子类中被实现。然而,在C语言中,没有对应的关键字来实现类和抽象的概念。 相反,C语言通过结构体来模拟类的概念。结构体是一种用户自定义的数据类型,可以包含多个不同类型的数据成员。通过结构体,我们可以将相关的数据和功能组合在一起。然而,C语言中的结构体不支持继承和多态等面向对象的特性。 在C语言中,我们可以使用函数指针来模拟抽象类和接口的概念。函数指针可以指向不同的函数,通过使用函数指针,我们可以实现多态性,即在运行时根据函数指针指向的具体函数来执行不同的操作。 综上所述,C语言并不直接支持面向对象中的类和抽象的概念,但可以使用结构体和函数指针来实现类似的功能。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [面向对象——类和对象](https://blog.csdn.net/shouyeren_st/article/details/126210622)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [面向对象编程原则(06)——依赖倒转原则](https://blog.csdn.net/lfdfhl/article/details/126673771)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值