小羊的CPP第一周

才开始学习c++
太深奥太技术的博客内容也写不出来
决定就目前学到的内容、概括一下与c语言的相似或不同之处

  • 语言类型

C是一个结构化语言,它的重点在于算法和数据结构。C程序的设计首要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到输出(或实现过程(事务)控制)。
C++,首要考虑的是如何构造一个对象模型,让这个模型能够契合与之对应的问题域,这样就可以通过获取对象的状态信息得到输出或实现过程(事务)控制。

最早听学算法的同学表示,c++里有一些功能,譬如类和容器,更能针对算法题里的一些问题,用起来也更方便、移植性强。
此外,c++作为一门面向对象的语言,更抽象、更概括,封装技术也使程序更灵活,容易扩展。这段是听学姐讲的

  • 输入输出
    c语言的输入输出是依靠scanf()和printf()语句实现的,在输出中用%s/%d/%f等占位符实现混合输出,而c++好像不行。
    c++的输入输出使用一种“流”的方式,意为内容随时间顺序而生成或消耗。譬如书上习题1.11中:
  while(s<=e)
  {
  	std::cout<<s<<",";
  	s++;
  }
  std::cout<<"\nover"<<std::endl;

while()语句每次循环时,都会将当下s的值传入cout,和最后的"\nover"一同,等待std::endl语句,才能一次性输出。感觉这种形式,很像队列的思路。
此处的操作是,cout将消息填入内存的缓冲区中,而endl则结束当前行,减肥缓冲区的所有内容刷入设备。
此外,c++中没有%d等占位符,复杂语句的内容要多次用<<实现,没法做到真正意义上的混合输出。
c语言里,通过改变占位符而实现的格式化输出,在c++中的具体表现为

std::cout << dec << a <<" "			//十进制
<< oct << a << " "					//八进制
<< hex << a <<std::endl;			//十六进制

  • c++引入了“类”这一数据类型。我们常说的“面向对象"中的对象的集合即为
    譬如书中最初提及的Sales_item类,虽然是被额外定义的数据类型,但是在程序中可以和那些基本内置类型(如int,float)一样,直接进行操作。
    当你定义一个类时,你需要定义可以对这个类进行的所有操作。根据你的定义,加上不同的运算组合,程序才能实现多种多样的功能。这也是c++语言强移植性的根本保证。
    此外,c++的数据类型和c也不尽相同。新引入了bool 和 wchar_t 等类型。

  • 初始化
    与c语言不同,c++定义了多种初始化的形式。为了信息的安全和准确,书上推荐使用带有花括号的初始化语句,如

long double ld = 3.145926536;
int a{ld}, b = {ld};

因为会造成数据信息丢失,这样的语句在编译时就会报错。

  • 声明、定义与作用域
    这个也是一开始就会发现的、和c语言不同的地方。如输入输出时的std::cinstd:cout就很典型,是指此处提到的名字“cin”“cout”是定义在命名空间“std”中的。
    *注意:全局作用域一般没有名字,调用其中的参数或函数时,直接作用域运算符::加变量名即可。这在嵌套多层函数时会用到。

  • 引用
    这是实实在在的c++的迷惑点。

int ival = 1;
inr &refVal = ival;
refVal = 2;

此时,ival 的值也会变成2。
引用 是一个起别名的操作。你可以通过本名或新的别名去调用这个存储空间。
引用 必须附在某个同类型对象上,引用不是对象。
后续的复合类型中,有*和&符号的混用现象,要注意辨别真实意味。

int i = 1;
int *r = &i;
int *p;
p = &i;
*p = i;
int &r2 = *p;
  • 其他

强制类型转换有两种形式

long int a = 329;
int b = (int) a;
//或者 
int b = int (a);

不过没什么区别就是啦~

内存操作
除了malloc()和free()以外,还有new()和delete()来分配、释放内存。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值