- 博客(18)
- 资源 (31)
- 收藏
- 关注
转载 默认构造函数-(无关、有关)
转:http://blog.csdn.net/hankai1024/article/details/7947989 错误认识1:若程序员没有自己定义无参数的构造函数,那么编译器会自动生成默认构造函数,来进行对成员函数的初始化。 错误认识2:编译器合成出来的default constructor会明确设定’“class内每一个data member的默认值”。但这两种种认识是有误的,不全面的。
2016-10-31 11:20:41 459
转载 为什么要使用非类型模板参数?
为什么要使用非类型模板参数? 1、这是因为需要才这样的,不如说:我们要实现一个堆栈,那么我们在堆栈中的数据可能是指针,字符串,整型等,那么如果没有摸板非类型参数,我们就要定义3个摸板,但是我们有了摸板非类型参数,我们就可以定义一个摸板,在定义的时候指定类型. 2、类型参数用于指定一个类型,非类型参数用于指定一个量。 有的模板可以基于类型而实例化,比如一个链表,可以装字符串对象,也可以装整数;
2016-10-31 11:07:23 1538 1
转载 虚析构函数(删除基类对象时,先调用派生类的虚构函数,再调用基类虚析构函数)
我们已经介绍过析构函数(详情请查看:C++析构函数),它的作用是在对象撤销之前做必要的“清理现场”的工作。当派生类的对象从内存中撤销时一般先调用派生类的析构函数,然后再调用基类的析构函数。1、系统会只执行基类的析构函数,而不执行派生类的析构函数。如下例子 [例12.3] 基类中有非虚析构函数时的执行情况。为简化程序,只列出最必要的部分。 1. #include <iostream> 2. u
2016-10-31 10:48:57 3596
转载 类的成员变量 声明顺序 决定 初始化顺序(构造函数初始化列表不影响)
类成员的声明顺序决定初始化顺序; 构造函数初始化列表不影响初始化顺序;C++初始化类成员时,是按照声明的顺序初始化的,而不是按照出现在初始化列表中的顺序。class B{public: //m_b = 2,m_a = 1 B():m_a(1),m_b(m_a+1) { cout << "m_b = " << m_b << ",m_a = " << m_a
2016-10-31 10:33:58 1528
原创 类的成员函数存储方式(是否属于类的对象)
//charles测试例子class A{public: A(){cout << "A()" << endl;} ~A(){cout << "~A()" << endl;} void func(){cout<<"void func()"<<endl;} void func2() { cout<<"void func2()"<<endl;
2016-10-31 09:29:14 1749
转载 实例化类,怎么限制只能在堆或栈分配!
昨天一个同学去网易面试C++研发,问到了这么一个问题:如何限制一个类对象只在栈(堆)上分配空间? 一般情况下,编写一个类,是可以在栈或者堆分配空间。但有些时候,你想编写一个只能在栈或者只能在堆上面分配空间的类。这能不能实现呢?仔细想想,其实也是可以滴。 在C++中,类的对象建立分为两种,一种是静态建立,如A a;另一种是动态建立,如A* ptr=new A;这两种方式是有区别的。 1、静态建立
2016-10-31 09:11:02 1041
转载 1、空类的sizeof为1,为什么?
一个类的实例化对象所占空间的大小? 注意不要说类的大小,是类的对象的大小。 首先,类的大小是什么?确切的说,类只是一个类型定义,它是没有大小可言的。 用sizeof运算符对一个类型名操作,得到的是具有该类型实体的大小。add charles 空结构体:struct d{} 的sizeof也是1。 如果 Class A; A obj; 那么sizeof(A)==sizeof(obj) 那么siz
2016-10-31 08:53:20 6973 1
转载 C++中复制构造函数与重载赋值操作符总结
http://www.jellythink.com/archives/378 这篇文章将对C++中复制构造函数和重载赋值操作符进行总结,包括以下内容:复制构造函数和重载赋值操作符的定义; 复制构造函数和重载赋值操作符的调用时机; 复制构造函数和重载赋值操作符的实现要点; 复制构造函数的一些细节。 复制构造函数和重载赋值操作符的定义我们都知道,在C++中建立一个类,这个类中肯定会包括构造函数
2016-10-30 21:45:23 515
转载 C++空类编译器自动生成的6个成员函数
一、问题 在C++中,编译器会为空类提供哪些默认成员函数?分别有什么样的功能呢? 二、详解 1、空类,声明时编译器不会生成任何成员函数 对于空类,编译器不会生成任何的成员函数,只会生成1个字节的占位符。 有时可能会以为编译器会为空类生成默认构造函数等,事实上是不会的,编译器只会在需要的时候生成6个成员函数:一个缺省的构造函数、一个拷贝构造函数、一个析构函数、
2016-10-30 21:01:53 803
原创 c++面试被问到了++i与i++的效率高低
今天做c++面试被问到了++i与i++的效率高低这个问题需要分两种情况来解说:1、当变量i的数据类型是c++语言默认提供的类型的话,他们的效率是一样的。int a,i=0; a=++i;汇编代码如下:int a,i=0;01221A4E mov dword ptr [i],0 a=++i;01221A55 mov eax,dword ptr [i] 01
2016-10-29 22:22:35 558
转载 文件中有一组整数,要求排序后输出到另一个文件中
//文件中有一组整数,要求排序后输出到另一个文件中 #include <iostream>#include <fstream> //文件输入输出流#include <vector>using namespace std;int main(){ ifstream InFile("in.txt"); if(InFile.good()) { cout<<"o
2016-10-29 22:05:24 1579
转载 如何判断一段程序是由C 编译程序还是由C++编译程序编译的?
以下是在论坛中看到的两种解释: (1)如果是要你的代码在编译时发现编译器类型,就判断cplusplus或_STDC宏,通常许多编译器还有其他编译标志宏,#ifdef __cplusplus cout<<"c++";#else cout<<"c";#endif 如果要判断已经编译的代码的编译类型,就用nm查一下输出函数符号是否和函数名相同。(相同为c,
2016-10-29 21:53:29 534
转载 _onexit函数的使用 完成主函数执行完毕后再执行一段程序
#include <iostream>#include <cstdlib>using namespace std;//_onexit 包含在cstdlib中,是c语言中的库函数//_onexit Callback函数必须是带有int类型返回值的无参数函数//_onexit 无论_onexit函数放到main中哪个位置相应的Callback都是最后执行//_onexit 如果有多个_onexi
2016-10-29 21:47:21 580
转载 分别写出BOOL,int,float,指针类型的变量a 与“零”的比较语句
零值比较–BOOL,int,float,指针变量与零值比较的if语句这是程序员面试的一道常见题,也是个C++基础问题。若只在大学里看过几本基础的编程入门书,看见这道题可能会觉得奇怪,不就是和0比较吗,直接拿出来比就是了,其实非也。下文引自google搜索结果,出处不详,高手可以无视,菜菜留下,记得做好笔记。 首先给个提示:题目中要求的是零值比较,而非与0进行比较,在C++里“零值”的范围可就大了,
2016-10-29 11:33:36 6708
转载 C++中的四种强制类型转换的区别
使用标准C++的类型转换符:static_cast、dynamic_cast、reinterpret_cast、和const_cast。1 static_cast用法:static_cast < type-id > ( expression ) 该运算符把expression转换为type-id类型,但没有运行时类型检查来保证转换的安全性。它主要有如下几种用法:①用于类层次结构中基类和子类之间
2016-10-29 11:24:10 933
转载 C/C++不是类型安全的!
什么是类型安全?类型安全很大程度上可以等价于内存安全,类型安全的代码不会试图访问自己没被授权的内存区域。“类型安全”常被用来形容编程语言,其根据在于该门编程语言是否提供保障类型安全的机制;有的时候也用“类型安全”形容某个程序,判别的标准在于该程序是否隐含类型错误。类型安全的编程语言与类型安全的程序之间,没有必然联系。好的程序员可以使用类型不那么安全的语言写出类型相当安全的程序,相反的,差一点儿的程序
2016-10-29 09:33:43 626
转载 只能用intialization list而不能用assignment
nt i, int j) : a(i), b(j) { }// 必须在这里初始化 }; int main() { A a(1,2); return 0; } (2)includeusing namespace std; class A { private: int x1; public: A(int i) { // 只有一个带参的构造函数
2016-10-29 09:00:30 956
linux_下_C_语言_连接_MySQL数据库_(详细注释).txt
2012-04-28
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人