博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
c++细节--section1
阅读量:6923 次
发布时间:2019-06-27

本文共 1281 字,大约阅读时间需要 4 分钟。

1.register声明的变量为寄存器变量,因此没有地址,不能对它取地址操作。

2.【用错sizeof】当数组作为函数参数传递时,数组会退化为同类型的指针。

3.每个成员在成员初始化列表中只能出现一次,初始化的顺序不是由名字在初始化列表中的顺序决定,而是由成员在类中被声明的顺序决定。

/******************point.h****************/class point{   private:        int xPos;        int yPos;   public:        point(int x):xPos(x),yPos(xPos)        {}        void print()       {           cout<<"xPos:  "<
<<", yPos"<
<

 

/**********************main.c***************/#include "point.h"int main(){     point pt1(3);     pt1.print();     return 0;}

输出结果如下:

xPos:  3,  yPos:  -858993460

从结果来看,yPos没有像预期初始为3,这是因为yPos排在xPos前面,因此“yPos(xPos)”先被执行,“xPos(x)”后被执行。

4.默认复制构造函数带来的问题

当复制成员涉及动态内存时,复制的两个对象中变量都指向了同一个内存块,可是,两个指针对象撤销有先后,一旦一个对象被撤销,另一个便成了“野指针”,使用该指针再次释放同一动态内存单元会引发内存错误。解决方法是:显示定义复制构造函数(为新对象开辟新的动态内存);

5.const和引用型数据成员只能通过成员初始化表达式进行初始化。

class point{     private:          const int xPos;          const int yPos;    public:       /*        point(int x,int y)         //错误!!无法直接复制        {            xPos = x;            yPos = y;        }      */        point(int x,int y):xPos(x),yPos(y)  //const数据成员只能在初始化列表中初始化        {        }       ...}

6.const与成员函数

类型  函数名(参数列表)  const{      函数体}

const成员函数表示该成员函数只能读取类数据成员,而不能修改类数据成员。

const对象只能被创建,撤销以及只读访问,不能改写。

 

转载于:https://www.cnblogs.com/wlzy/p/5898021.html

你可能感兴趣的文章
Sun公司开源游戏服务器
查看>>
Jasmine测试ng Promises - Provide and Spy
查看>>
Response.Write具体介绍
查看>>
ARM汇编编程基础之一 —— 寄存器
查看>>
安装LVS安装LVS和配置LVS的工作比较繁杂
查看>>
Scilab 的画图函数(1)
查看>>
经常使用的android弹出对话框
查看>>
音频 属性具体解释(涉及採样率、通道数、位数、比特率、帧等)
查看>>
[詹兴致矩阵论习题参考解答]习题2.8
查看>>
什么是敏捷设计
查看>>
Java-Android 之短信发送
查看>>
xcode升级到6.0以后遇到的警告错误解决方法
查看>>
如何过上简单的生活
查看>>
bootstrapUI
查看>>
cocos2d-js 各浏览器上的表现
查看>>
【SSRS】入门篇(六) -- 分组和总计
查看>>
完整的Ajax实例
查看>>
C#JSON序列化与反序列化
查看>>
C++ 符号修饰和函数签名
查看>>
第一个Json.Net Demo
查看>>