C/C++
文章平均质量分 62
Cape0915
这个作者很懒,什么都没留下…
展开
-
关于基类和派生类的构造函数和析构函数的执行顺序问题
【转载】http://blog.csdn.net/dyx810601/article/details/52097797 C++ 派生类的析构函数的调用顺序为:A) 基类、派生类和对象成员类的析构函数 B) 派生类、对象成员类和基类的析构函数 C) 对象成员类、派生类和基类的析构函数 D) 派生类、基类和对象成员类的析构函数答案是选着B,关于派生类构造函数与基类构造函数的调用转载 2017-09-04 11:13:06 · 6699 阅读 · 1 评论 -
C++对象的生存周期
各对象分配时期及存储区域:注意,全局数据区也叫静态存储区,存放静态变量和全局变量。常量存储在常量区。原创 2017-10-16 09:49:53 · 293 阅读 · 0 评论 -
拷贝构造与拷贝赋值
区别:拷贝构造函数用来初始化对象;而拷贝赋值用来把已经初始化过的对象进行赋值。代码:Sales_data类中的拷贝构造函数和拷贝赋值运算符定义如下://Sales_data类的拷贝构造函数定义Sales_data::Sales_data(const Sales_data &orig): bookNo(org.bookNo), //使用string的拷贝构造函数原创 2017-10-18 19:56:55 · 1777 阅读 · 0 评论 -
析构函数的一些特点
完成的工作: 类似构造函数有一个初始化部分和一个函数体部分,析构函数也有一个函数体和一个析构部分。构造函数中,先进行成员的初始化,再执行函数体;而在析构函数中,是先执行函数体,后销毁成员。成员按初始化顺序的逆序销毁。调用析构函数的实机:无论何时一个对象被销毁,就会自动调用其析构函数。变量在离开其作用域时被销毁当一个对象被销毁时,其成员被销毁容器被销毁时,其元素被销毁对于动态分配的对象,当对原创 2017-10-18 20:19:47 · 4884 阅读 · 0 评论 -
直接初始化和拷贝初始化
定义:如果使用等号(=)初始化一个变量,实际上执行的是“拷贝初始化”,编译器把等号右侧的初始值拷贝到新创建的对象中去。与之相反,如果不使用等号,则执行的是“直接初始化”示例:string dots(10,'.'); //直接初始化string s(dots); //直接初始化string s2 = dots;原创 2017-10-18 19:30:28 · 2427 阅读 · 0 评论 -
局部对象,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 · 3102 阅读 · 0 评论 -
consexpr关键字和常量表达式
常量表达式常量表达式的定义:是指值不会改变并且在编译过程中就能得到计算结果的表达式。常量表达式的种类:字面值是常量表达式用常量表达式初始化的const对象也是常量表达式常量表达式举例:const int max_files = 20; //max_files是常量表达式const int limit = max_files + 1; //limit是常量表达式原创 2017-09-22 09:31:26 · 563 阅读 · 0 评论 -
C++ IO类
IO库类型和头文件//头文件和类型//流#include <iostream>istream , wistream //从流中读取数据ostream , wostream //向流中写入数据iostream , wiostream //读写流//文件#include <fstream>ifstream , wifstream //从文件读取数据ofst原创 2017-09-21 10:50:01 · 523 阅读 · 0 评论 -
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 · 1382 阅读 · 0 评论 -
函数指针
指向函数的指针函数指针指向的是函数而非对象。像其他指针一样,函数指针也指向某个特定的类型。函数类型由其返回类型以及形参表确定,而与函数名无关://比较两个对象的长度bool lengthCompare(const string &, const string &);//pf指向一个函数,该函数的参数是两个const string的引用,返回值是bool类型bool (*pf)(const str原创 2017-09-20 09:21:24 · 450 阅读 · 0 评论 -
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 · 714 阅读 · 0 评论 -
explicit关键字和隐式的类类型转换
隐式类类型转换C++primer Note :能通过 单个形参 来调用的构造函数定义了从 形参类型 到 该类类型 的一个隐式转换什么是“隐式类类型转换”呢? 上面提到了,是从 构造函数形参类型 到 该类类型 的一个编译器的自动转换。举例如下:class A{public: A(string s):str(s){} //构造函数 string getStr() {原创 2017-09-19 08:59:52 · 765 阅读 · 0 评论 -
聚合类,字面值类型,constexpr函数
聚合类聚合类使得用户可以直接访问其成员,当一个类满足如下条件时,我们说它是聚合的:所有成员都是public的。没有定义任何构造函数没有类内初始值没有基类,也没有virtual函数。例如:下面的类是一个聚合类:struct Data{ int ival; string s;};字面值类型字面值类型包括:算数类型(char , bool , int 等等),引用和指针,以及字原创 2017-09-18 10:48:57 · 723 阅读 · 0 评论 -
C++中cout和cerr的区别?
【转载】http://blog.csdn.net/garfield2005/article/details/7639833之前一直在用,但就是没在意两者到底有啥却别,今天又想到这个问题,总结下吧(以下的内容均是本人从网上查阅资料看来整理的,暂时还没有查阅官方资料,不保证准确,欢迎讨论)其实大家平常常会用的主要有三个:cout、cerr、clog,首先简单介绍下三者。这三者在C++中都是标准IO转载 2017-09-08 10:11:11 · 805 阅读 · 0 评论 -
C++堆空间和栈空间的区别
【转载】http://www.cppblog.com/oosky/archive/2006/01/21/2958.html 非本人作也!因非常经典,所以收归旗下,与众人阅之!原作者不祥!一直对堆栈空间的存储问题不是很理解,这个众人皆评论很经典,先转载过来慢慢看,原文排版太乱,有空再把原文排版修改一下。 堆和栈的区别 一、预备知识—程序的内存分配 一个由c/C++编译的程序占用的内存分为以下几转载 2017-09-20 11:36:42 · 5244 阅读 · 3 评论 -
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 · 1133 阅读 · 0 评论 -
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 · 1266 阅读 · 0 评论 -
动态内存与智能指针
两种智能指针: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 · 280 阅读 · 0 评论