- 博客(87)
- 资源 (1)
- 收藏
- 关注
原创 析构函数的一些特点
完成的工作: 类似构造函数有一个初始化部分和一个函数体部分,析构函数也有一个函数体和一个析构部分。构造函数中,先进行成员的初始化,再执行函数体;而在析构函数中,是先执行函数体,后销毁成员。成员按初始化顺序的逆序销毁。调用析构函数的实机:无论何时一个对象被销毁,就会自动调用其析构函数。变量在离开其作用域时被销毁当一个对象被销毁时,其成员被销毁容器被销毁时,其元素被销毁对于动态分配的对象,当对
2017-10-18 20:19:47
5042
原创 拷贝构造与拷贝赋值
区别:拷贝构造函数用来初始化对象;而拷贝赋值用来把已经初始化过的对象进行赋值。代码:Sales_data类中的拷贝构造函数和拷贝赋值运算符定义如下://Sales_data类的拷贝构造函数定义Sales_data::Sales_data(const Sales_data &orig): bookNo(org.bookNo), //使用string的拷贝构造函数
2017-10-18 19:56:55
1923
原创 直接初始化和拷贝初始化
定义:如果使用等号(=)初始化一个变量,实际上执行的是“拷贝初始化”,编译器把等号右侧的初始值拷贝到新创建的对象中去。与之相反,如果不使用等号,则执行的是“直接初始化”示例:string dots(10,'.'); //直接初始化string s(dots); //直接初始化string s2 = dots;
2017-10-18 19:30:28
2676
原创 Effective C++ 条款36:绝不重新定义继承而来的non-virtual函数
知识点:多态时:基类(或子类)指针指向子类对象,利用该指针调用成员时关键点看子类对象非多态时:基类(或子类)指针指向子类对象时,利用该指针调用成员时关键点看指针对于基类B和子类D:class B{public: void mf(); ...};class D:public B{...}; 我们知道对于non-virtual函数,子类是既继承接口又继承实现的,在这种情况下
2017-10-16 20:05:55
487
原创 动态内存与智能指针
两种智能指针:shared_ptr : 允许多个指针指向同一对象unique_ptr :“独占”所指向的对象shared_ptrshared_ptr类: 类似vector,智能指针也是模板,所以创建方式为:shared_ptr<string> p1;//空智能指针shared_ptr,可以指向stringshared_ptr<list<int>> p2;//空智能指针shared_ptr,
2017-10-16 11:30:02
326
原创 Effective C++ 条款33:避免遮掩继承而来的名称
考虑下面这段代码:int x; void someFunc(){ double x; //local variable std::cin>>x; //read a new value to local x}作用域图如下: 这个指涉的是local变量x,而不是global变量x,因为内存作用域会的名称遮掩外围作用域的名称。当编译器处于someFunc的作用域内并遭遇名
2017-10-02 18:51:52
557
转载 EditPlus中实现Java带包的类编译运行(两种方法)
初学Java时很多老师不推荐使用Eclipse、IntelliJ IDEA等高级工具,因为这些工具帮助我们完成了很多工作,很容易让初学者忽略掉java程序的编写、编译、运行等环节的细节。所以老师往往推荐初学者使用EditPlus、NotePad++等高级记事本工具编写代码,促进对Java的了解。大家应该都知道,不管是EditPlus还是NotePad++,都可以配置java编译及运行环境,这样每次编
2017-09-29 09:08:49
1630
原创 关于错误An exception has occurred,use %tb to see the full traceback,SystemExit
在用TensorFlow训练MNIST数据集时(用的是spyder IDE) 总是出现如下错误:百度了下,都没有找到什么好的办法,看到一个英文贴子,解释了这个问题,原帖子链接: https://stackoverflow.com/questions/10888045/simple-ipython-example-raises-exception-on-sys-exit原链接后面解答貌似是回
2017-09-23 19:46:56
70423
30
原创 技术贴子URL
收藏别人的一些优秀技术帖子,等想看时直接打开链接就好了,不想一篇一篇转载了,太麻烦了。持续更新…C++C++ 模板详解(一):http://www.cnblogs.com/gw811/archive/2012/10/25/2738929.htmlJAVAJdk和Jre目录和三个lib目录说明jre\lib下的jar没有设置CLATHPATH为什么import也能搜索到import以及java类的搜索
2017-09-23 19:09:56
308
转载 Effective C++ 条款25:考虑写出一个不抛异常的swap函数
考虑写出一个不抛出异常的swap函数本节讲解如何自定义一个高效的swap函数对于std名空间中的swap缺省函数如下所示namespace std{ template<typename T> void swap(T& a, T& b) { T temp(a); a=b; b=temp; }}class WidgetIm
2017-09-23 11:35:57
383
原创 局部对象,static局部对象,static全局对象
为分清这些,我们先看一段代码:#include<iostream>static int global_sta = 1; //global_sta为静态全局对象void print(){ int non_local = 2; //non_local为局部对象,非静态的 static sta_local = 3; //sta_local为静态局部对象}非静态局部对
2017-09-22 10:25:36
3195
原创 consexpr关键字和常量表达式
常量表达式常量表达式的定义:是指值不会改变并且在编译过程中就能得到计算结果的表达式。常量表达式的种类:字面值是常量表达式用常量表达式初始化的const对象也是常量表达式常量表达式举例:const int max_files = 20; //max_files是常量表达式const int limit = max_files + 1; //limit是常量表达式
2017-09-22 09:31:26
624
原创 C++ IO类
IO库类型和头文件//头文件和类型//流#include <iostream>istream , wistream //从流中读取数据ostream , wostream //向流中写入数据iostream , wiostream //读写流//文件#include <fstream>ifstream , wifstream //从文件读取数据ofst
2017-09-21 10:50:01
599
原创 深度探索C++对象模型——Data Member的布局(2)书上的错误
书上给了一个代码实验,比较同一个类中不同access section(访问权限区域)内的两个成员变量的地址,由此来判断哪个section在地址空间中先出现。但书上的这个实验出现了很多错误。以下为书上内容,错误的地方用红色标出。Data Member的布局C++ Standard 也允许编译器将多个access sections之中的data members 自由排列,不必在乎它们出现在class声明
2017-09-20 21:22:15
464
转载 C++堆空间和栈空间的区别
【转载】http://www.cppblog.com/oosky/archive/2006/01/21/2958.html 非本人作也!因非常经典,所以收归旗下,与众人阅之!原作者不祥!一直对堆栈空间的存储问题不是很理解,这个众人皆评论很经典,先转载过来慢慢看,原文排版太乱,有空再把原文排版修改一下。 堆和栈的区别 一、预备知识—程序的内存分配 一个由c/C++编译的程序占用的内存分为以下几
2017-09-20 11:36:42
5650
3
原创 Effective C++ 条款20:尽量用传引用替换传值
避免浪费时间空间默认情况下,C++的函数调用是传值调用,也就是说形参拷贝实参的内容。考虑以下继承体系:class Person{private: string name; string address;public: Person(){} virtual ~Person(){}};class Student: public Person{private:
2017-09-20 10:39:44
671
原创 C++调试帮助之assert和NDEBUG
assert预处理宏assert宏的原型定义在头文件assert.h中(C++对应的头文件为cassert),其作用是如果它的条件返回错误,则终止程序执行,原型定义://include <assert.h>void assert( int expression );assert的作用是先计算表达式 expression ,如果其值为假(即为0),那么它先向stderr打印一条出错信息, 然后通过
2017-09-20 10:02:11
1550
原创 函数指针
指向函数的指针函数指针指向的是函数而非对象。像其他指针一样,函数指针也指向某个特定的类型。函数类型由其返回类型以及形参表确定,而与函数名无关://比较两个对象的长度bool lengthCompare(const string &, const string &);//pf指向一个函数,该函数的参数是两个const string的引用,返回值是bool类型bool (*pf)(const str
2017-09-20 09:21:24
505
转载 APUE第三章 文件IO
【转载】http://blog.csdn.net/fusan2004/article/details/52357541 前言:前面提到,UNIX的哲学是一切皆文件,文件的活动过程便是进程,整本APUE都是围绕文件和进程来阐述的,围绕文件必然是创建、增减、删除、关闭,其中增减便是IO的操作,IO是唯一的难点;进程同样如此,同样是创建、执行、退出的过程,进程的运行周期难免与文件交互,此时交互的过程就可
2017-09-19 12:20:13
423
原创 explicit关键字和隐式的类类型转换
隐式类类型转换C++primer Note :能通过 单个形参 来调用的构造函数定义了从 形参类型 到 该类类型 的一个隐式转换什么是“隐式类类型转换”呢? 上面提到了,是从 构造函数形参类型 到 该类类型 的一个编译器的自动转换。举例如下:class A{public: A(string s):str(s){} //构造函数 string getStr() {
2017-09-19 08:59:52
841
原创 聚合类,字面值类型,constexpr函数
聚合类聚合类使得用户可以直接访问其成员,当一个类满足如下条件时,我们说它是聚合的:所有成员都是public的。没有定义任何构造函数没有类内初始值没有基类,也没有virtual函数。例如:下面的类是一个聚合类:struct Data{ int ival; string s;};字面值类型字面值类型包括:算数类型(char , bool , int 等等),引用和指针,以及字
2017-09-18 10:48:57
816
原创 C++ string对象和C风格字符串的差别与转换接口
C++ string对象头文件为 C++ 标准库文件 string #include<string>string定义在命名空间std中using std::string;初始化方式string s1; //默认初始化,s1是一个空串string s2(s1); //拷贝初始化,s2是s1的一个副本string s2 = s1;
2017-09-14 11:41:31
1427
转载 inline用法详解
转载:http://blog.csdn.net/kekuixiong/article/details/6652254(修改了一下排版) . (一)inline函数(摘自C++ Primer的第三版)在函数声明或定义中函数返回类型前加上关键字inline即把min()指定为内联。inline int min(int first, int secend) { /****/};inlin
2017-09-09 19:40:25
872
转载 Linux中的文件描述符与打开文件之间的关系
转载:http://blog.csdn.net/cywosp/article/details/389652391. 概述 在Linux系统中一切皆可以看成是文件,文件又可分为:普通文件、目录文件、链接文件和设备文件。文件描述符(file descriptor)是内核为了高效管理已被打开的文件所创建的索引,其是一个非负整数(通常是小整数),用于指代被打开的文件,所有执行I/O操作的系统调用都通过
2017-09-08 15:35:03
262
原创 Effective C++ 条款14:在资源管理器中小心coping行为
上节是对资源的管理说明,有时候我们不能依赖于shared_ptr或者auto_ptr,所以我们需要自己建立一个资源管理类来管理自己的资源。例如建立一个类来管理Mutex锁,现在使用函数处理类型为Mutex的互斥器对象class Lock{public: explicit Lock(Mutex* mu):mutexPtr(mu) { lock(mutexPtr);
2017-09-08 11:17:02
349
转载 C++中cout和cerr的区别?
【转载】http://blog.csdn.net/garfield2005/article/details/7639833之前一直在用,但就是没在意两者到底有啥却别,今天又想到这个问题,总结下吧(以下的内容均是本人从网上查阅资料看来整理的,暂时还没有查阅官方资料,不保证准确,欢迎讨论)其实大家平常常会用的主要有三个:cout、cerr、clog,首先简单介绍下三者。这三者在C++中都是标准IO
2017-09-08 10:11:11
857
原创 深度探索C++对象模型---Function语义学之Member的各种调用方式
非静态成员函数c++的设计准则之一就是:非静态成员函数至少和一般的非成员函数有相同的效率。编译器内部已将member函数实体转换为对等的nonmember函数实体。转化步骤:改写函数原型以安插一个额外的参数到member function中,使class object可以调用该函数,该额外参数为this指针。将函数中每一个对nonstatic data member的存取操作改为经由this指针
2017-09-07 17:25:08
486
转载 IP数据报文格式
【转载】http://blog.csdn.net/shinezhang86/article/details/47145907由于记性不好的原因, 一直对报文格式的字段记的不是很牢固, 故花了一天时间学习IP报文格式, 第二天来总结. 过两天再继续学习TCP和UDP.IP报文格式如下图所示(图片来源—百度百科): 版本(Version, 4bit):为4代表ipv4, 为6代表ipv6报头长度
2017-09-07 15:33:02
4531
转载 C++的三种访问权限与三种继承方式
【转载】http://blog.csdn.net/luoweifu/article/details/46953343 三种访问权限我们知道C++中的类,有三种访问权限(也称作访问控制),它们分别是public、protected、private。要理解它们其实也很容易,看下面了一个例子。 父类:class Person{public: Person(const stri
2017-09-07 11:26:23
1186
原创 Effective C++ 条款9:绝不在构造和析构过程中调用virtual函数
建议在构造和析构期间不要调用virtual函数,因为这类调用从不下降至derived class(比起当前执行构造函数和析构函数的那层)换句话说:在构造函数和析构函数中,virtual函数失去多态性。 试想一下,假设此时在构造函数和析构函数中,virtual函数没有失去多态性,会出现什么问题。我们知道构造次序吧,先构造base类部分,再构造derived部分。 那么在base类构造过程中,d
2017-09-04 11:22:17
500
转载 关于基类和派生类的构造函数和析构函数的执行顺序问题
【转载】http://blog.csdn.net/dyx810601/article/details/52097797 C++ 派生类的析构函数的调用顺序为:A) 基类、派生类和对象成员类的析构函数 B) 派生类、对象成员类和基类的析构函数 C) 对象成员类、派生类和基类的析构函数 D) 派生类、基类和对象成员类的析构函数答案是选着B,关于派生类构造函数与基类构造函数的调用
2017-09-04 11:13:06
6791
1
转载 如何快速转载CSDN中的博客
【转载】http://blog.csdn.net/bolu1234/article/details/51867099 前言 对于喜欢逛CSDN的人来说,看别人的博客确实能够对自己有不小的提高,有时候看到特别好的博客想转载下载,但是不能一个字一个字的敲了,这时候我们就想快速转载别人的博客,把别人的博客移到自己的空间里面,当然有人会说我们可以收藏博客啊,就不需要转载,
2017-09-04 11:07:24
242
原创 Effective C++ 条款8:别让异常逃离析构函数
建议析构函数绝对不要吐出异常.如果一个被析构函数调用的函数可能抛出异常,析构函数应该捕捉任何异常,然后吞下它们(不传播)或结束程序. 如果客户需要对某个操作函数运行期间抛出的异常做出反应,那么 class 应该提供一个普通函数(而非在析构函数中)执行该操作. 两点理由如果析构函数抛出异常,则异常点之后的程序不会执行,如果析构函数在异常点之后执行了某些必要的动作比如释放某些资源,则这些动作不会
2017-09-04 10:13:15
488
原创 深度探索C++对象模型———Data Member的布局
3.2 Data Member的布局(成员变量的布局)C++类对象中成员变量是以什么样的空间内存而布局的呢?对于下面一组data members(成员变量):class Point3d {public: // ...private: float x; static List<Point3d *> *freeList; float y; static con
2017-09-02 14:05:19
417
原创 深度探索C++对象模型———Data Member的绑定
3.1 Data Member的绑定(成员变量的绑定)考虑这样一段代码:// 某个foo.h头文件,从某处含入extern float x;// 程序员的Point3d.h文件class Point3d {public: Point3d(float, float, float); // 问题:被传回和被设定的x是哪一个x? float X() const { retu
2017-09-02 13:40:34
672
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅