zoukankan      html  css  js  c++  java
  • c++读书笔记

    现在我开始重学c++,为什么要学呢?不知道,也许心血来潮吧!反正技不压身。我要记读书笔记,这个原因我知道,因为学c#的时候都没记,好后悔!所以不能再后悔!言归正传

    1.内存管理

    内存分配方式有三种:

    (1)       从静态存储区域分配。内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。例如全局变量,static变量。

    (2)       在栈上创建。在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集中,效率很高,但是分配的内存容量有限。

    (3)       从堆上分配,亦称动态内存分配。程序在运行的时候用mallocnew申请任意多少的内存,程序员自己负责在何时用freedelete释放内存。动态内存的生存期由我们决定,使用非常灵活,但问题也最多。

    2.数组与指针的区别:

    数组要么在静态存储区建立(如全局数组),要么在栈上建立,其地址和容量在生命周期内保持不变,只有其内容可变。而指针可以指向任何内存块,它的特征就是可变,所以我们常用指针来指向动态内存块。

    3.常量指针与指针常量:

    常量指针声明:const int *p或int const  *p

    常量指针含义:常量指针指向的内容类型被限制为const型,即不会再变,但常量指针可以指向任意内存块,即存储的地址可以随意变。举个例子吧:

                         int a=3;      int  b=4;   const int *p=a;    *p=5;//错误,因为指针p指向的内容类型变为const型     a=4;//正确,可以这样改变a的值       p=b;//正确,p存储的地址可以变

    指针常量声明:int  *const p

    指针常量含义:指针常量意味着定义的指针是const型,那么必须有初始化,并且存储的地址不能再改变,但指针指向内容可以改变。还是举个例子:

                        int  a=3;    int b=4;    int *constp=a;//初始化是必须的   p=b;//错误,因为不能改变const类型指针  *p=6;//正确,指针指向内容可以变。

     4、c++中string对象的+操作符的左右操作数必须至少有一个是string类型的,为什么呢?

     答:因为只有在左操作数是该类类型的对象时,才会考虑使用作为类成员的重载操作符。

    5、客串一下c#中string类型,众所周知:c#中string类型是引用类型,又众所周知:值类型如果附值的时候,是把自己的一个副本附给另一个变量,之后它们互不影响。而引用类型则是把它在堆栈中的地址复制一份给另一个变量,它们的指向仍是一样的,所以当对一个变量进行操作的时候会影响到另外一个变量。但下面代码怎样理解:

    using System;
    using System.Collections.Generic;

    public class MyClass
    {
        
    public static void Main()
        
    {
            
    string s="abc";
            
    string a=s;
            s
    ="def";
            Console.WriteLine(
    "{0},{1}",a,s);
        }

        
    }
     

    如果你对string类型理解不深,会让你晕倒转向,一个引用类型怎么会表现出值类型的特征?我让msdn告诉你答案::“String 对象称为不可变的(只读),因为一旦创建了该对象,就不能修改该对象的值。看来似乎修改了 String 对象的方法实际上是返回一个包含修改内容的新 String 对象。”
    明白了吧!

  • 相关阅读:
    好用开源的C#快速开发平台
    Chrome 53 Beta一些有意思的改动
    前端面试问题总结
    前端构建的初步尝试
    [译] 如何运用新技术提升网页速度和性能
    切图崽的自我修养-[ES6] 迭代器Iterator浅析
    解决表单GET提交后台数据乱码问题
    设置port转发来訪问Virtualbox里linux中的站点
    linux杂谈(十三):代理server
    a little riak book
  • 原文地址:https://www.cnblogs.com/yongbufangqi1988/p/1787356.html
Copyright © 2011-2022 走看看