C++学习笔记NO.1(面向对象、Hello world与引用)

面向对象与面向过程

与面向对象所对应的便是面向过程,两种不同的程序设计理念都有着许多种代表语言。

一般来说,C语言主要体现面向过程程序设计,python主要体现面向对象程序程序设计,但这并不是绝对的,程序设计语言只是程序设计的工具,它并不能决定你怎么去实现一个程序。

对于两种程序设计思路,打个比方来区分它们:
从北京到上海可以用坐飞机的方式到达,如果用面向对象的思路,我们只用买一张机票然后坐上飞机,一会儿就到了我们的目的地,而如果用面向过程的思路,我们则需要首先是一名合格的飞行员,我们得自己面对驾驶舱里的一大堆操作面板以及五颜六色的指示灯,然后驾驶飞机飞去目的地。
当然,这个比方并不是说面向过程就一定逊色于面向对象,比如,用面向对象的方法我们不能决定飞机的性能发挥——是平稳降落还是迫降,这就是我们无法掌握的了。。。

今年我们将学习“c++程序设计”课程,这门课程的重点应该是“程序设计”所以让程序设计得更加简单更加性能才是我们的目标,而不是炫耀我们的c++语言技术有多牛
听说在学习一门语言时,在第一个程序中输出“hello world”会带来好运
那么,让我们开始吧!

Hello world代码

#include <iostrem>
using namespace std;
int main
{
    cout << "Hello world\n" << endl;
    return 0;
}

代码分析

第一行,
与C语言一样,c++用include语句声明头文件,只不过不加.h

第二行,
“using namespace”在以后的程序中将频繁地出现,
c++将标准程序库的所有标识符存放在名为“std”的命名空间中,如,cout
这样才能使程序正确使用如cout等的标识符

第五行,
“cout”是c++中的输出语句,
“endl”的作用是换行,\n也可以在c++中使用

c++中的注释有行注释与块注释,分别为“//”与“/**/”

c++的引用

代码

#include <iostream>
using namespace std;
int main()
{
    int a=5;
    int &n=a;
    n=4;
    cout << a;
    return 0;
}

输出结果是4

代码分析

这段代码使用了一个新类型——引用类型——“&”
其中n的类型是int &
引用类型必须要初始化,否则程序报错error: ‘n’ declared as reference but not initialized
int &n=a;的意思是n引用了a,
简单地说就是将n与a等价了,n成了a的一个别名,所以给n赋值等价于给a赋值,输出n的值等价于输出a的值
所以,程序的输出为4

注意
1.引用的对象不能是常量、不能是表达式。
所以int &n=a+2;程序报错error: invalid initialization of non-const reference of type ‘int&’ from an rvalue of type ‘int’|t initialized
2.一个变量引用另一个变量后,就不能再改变引用对象了
所以若之后再int &n=b;
程序报错error: redeclaration of ‘int& n’;
error: invalid initialization of non-const reference of type ‘int&’ from an rvalue of type ‘int’

引用的应用

交换两个变量的值

C语言错误代码:

int swap(int a, int b)
{
    int t=a;
    a=b;
    b=t;
    return 0;
}

若在使用了此函数swap(n1,n2),再输出n1、n2的值就会发现两个变量的值并没有交换,原因可以用形参与实参的概念解释,但也可以从函数中直接看出,在函数中,a与b是重新定义的两个变量,只是把n1与n2的值赋给了它们,两对变量之间并没有关系,所以在函数中交换a、b的值对于n1、n2并无影响。

C语言正确代码

int swap(int *a, int *b)
{
    int t=*a;
    *a=*b;
    *b=t;
    return 0;
}

加上*,使用&取出n1、n2的地址,函数swap(&n1,&n2)就能交换两个变量的值,原因在于指针a、b里存的是n1、n2的地址,交换了地址,也就交换了所对应的变量。

更简洁的c++代码

int swap(int &a, int &b)
{
    int t=a;
    a=b;
    b=t;
    return 0;
}

swap(n1,n2)根据等价的概念,把b赋值给a等价于赋值给与a等价的n1。

一个引用类型的函数

c++中有int型、double型等函数类型,同样也可以有引用类型的函数
int型函数return值是int型、double型函数返回值是double型,以此类推,引用类型函数的返回值是引用类型。

代码:
int n=5;
int &setvalue()
{
return n;
}
int main()
{
setvalue()=99;
cout << n;
return 0;
}
代码分析:

n是全局变量,并且作为了setvalue的返回值使用,而setvalue返回值的类型是引用,就是说,setvalue引用了n,主函数中对setvalue赋值等价于对n赋值,所以n的值变为99

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值