c/c++
zhnd
这个作者很懒,什么都没留下…
展开
-
指针的大小
打印sizeof(char *)、sizeof(int *)、sizeof(long *)、sizeof(double *),你会发现打印的值都相等。因为指针存放的是地址,所以它们的大小是固定的。指针大小与cpu、系统、编译器有关,由它们中位数最小的那个决定。原创 2017-12-20 00:34:49 · 462 阅读 · 0 评论 -
前置声明
前置声明(forward declaration)。 a.hclass A {private: int i;};b.hclass A;class B {private: A a;};原创 2017-12-31 00:22:26 · 413 阅读 · 0 评论 -
直接初始化和拷贝初始化
string dots(10, '.'); // 直接初始化string s(dots); // 直接初始化string s2 = dots; // 拷贝初始化string null_bock = "9-999-99999-9"; // 拷贝初始化string nines原创 2018-01-22 23:17:31 · 374 阅读 · 0 评论 -
拷贝构造函数什么时候调用?
1当用类的一个对象初始化该类的另一个对象时.例如:int main(){ point A(1,2); point B(A);//用对象A初始化对象B,拷贝构造函数被调用.}2 如果函数的形参是类的对象,调用函数时,进行形参和实参结合时. void f(point p){}main(){ point A(1,2); f(A);//函数的形参为类转载 2018-01-22 22:54:43 · 460 阅读 · 0 评论 -
拷贝构造函数
如果一个构造函数的第一个参数是自身类型的引用,且任何额外参数都有默认值,则此构造函数是拷贝构造函数。class Foo {public: Foo(); // 默认构造函数 Foo(const Foo&); // 拷贝构造函数 // ...}; 拷贝构造函数的第一个参数必须是一个引用类型。原创 2018-01-22 22:53:42 · 183 阅读 · 0 评论 -
C++ explicit关键字详解
首先, C++中的explicit关键字只能用于修饰只有一个参数的类构造函数, 它的作用是表明该构造函数是显示的, 而非隐式的, 跟它相对应的另一个关键字是implicit, 意思是隐藏的,类构造函数默认情况下即声明为implicit(隐式).那么显示声明的构造函数和隐式声明的有什么区别呢? 我们来看下面的例子:class CxString // 没有使用explicit关键字的类声转载 2018-01-22 22:38:20 · 175 阅读 · 0 评论 -
C++中iostream.h和iostream的区别
#include 非标准输入输出流 #include 标准输入输出流C++中为了避免名字定义冲突,特别引入了“名字空间的定义”,即namespace。 1,当代码中用时,输出可直接引用cout继承C语言的标准库文件,未引入名字空间定义,所以可直接使用。 2,当代码中引入时,输出需要引用std::cout使用时,引入std::有以下方法:1. using namespace std转载 2018-01-22 22:22:30 · 408 阅读 · 0 评论 -
C++的static关键字
C++的static有两种用法:面向过程程序设计中的static和面向对象程序设计中的static。前者应用于普通变量和函数,不涉及类;后者主要说明static在类中的作用。一、面向过程设计中的static1、静态全局变量在全局变量前,加上关键字static,该变量就被定义成为一个静态全局变量。我们先举一个静态全局变量的例子,如下://Example 1#include <iostream.h>转载 2018-01-09 22:44:08 · 190 阅读 · 0 评论 -
类的大小
class A {};//sizeof(A)大小为1这里为什么是1?如果是0的话,在创建对象 A a; int i; 时,i和a的地址相同,操作i的地址会影响a。所以,该值为1。class A {private: int i;};//sizeof(A)大小为4class A {private: int i; char c; int *pi;};原创 2017-12-27 23:57:07 · 472 阅读 · 0 评论 -
特殊数据类型成员变量的初始化
有些成员变量的数据类型比较特别,它们的初始化方式也和普通数据类型的成员变量有所不同。这些特殊的类型的成员变量包括: a. 常量型成员变量 b. 引用型成员变量 c. 静态成员变量 d. 整型静态常量成员变量 e. 非整型静态常量成员变量对于常量型成员变量和引用型成员变量的初始化,必须通过构造函数初始化列表的方式进行。在构造函数体内给常量型成员变量和引用型成员变量赋值的方式是行不通的。转载 2018-01-11 23:08:39 · 394 阅读 · 0 评论 -
const int *p与int *const p
引自《C++ Primer》第5版 指针本身是不是常量以及指针所指的是不是一个常量是两个相互独立的问题。用名词顶层const(top-level const)表示指针本身是个常量,而用名词底层const(low-level const)表示指针所指的对象是一个常量。 当执行对象的拷贝操作时,常量是顶层const还是底层const区别明显。其中,顶层const不受什么影响:执行拷贝操作并不会原创 2017-12-19 00:06:02 · 354 阅读 · 0 评论 -
extern关键字
extern是计算机语言中的一个关键字,可置于变量或者函数前,以表示变量或者函数的定义在别的文件中。提示编译器遇到此变量或函数时,在其它模块中寻找其定义,另外,extern也可用来进行链接指定。栗子:a.h#ifndef A_H#define A_Hchar c[] = "hello"; //定义全局变量c#endifb.cpp#include <stdio.h>#include "a.h"e原创 2017-12-23 17:37:14 · 196 阅读 · 0 评论 -
内联函数inline
内联函数是指用inline关键字修饰的函数。在类内定义的函数被默认成内联函数。内敛函数从源代码层看,有函数的结构,而在编译后却不具备函数的性质。 内联函数不是在调用时发生控制转移,而是在编译时将函数体嵌入在每一个调用处。编译时,类似宏替换,使用函数体替换调用处的函数名。一般在代码中用inline修饰,但是能否形成内敛函数,需要看编译器对该函数定义的具体处理。 内联扩展是用来消除函原创 2017-12-23 14:57:43 · 281 阅读 · 0 评论 -
宏定义转字符串
#include <stdio.h>#define ZERO "0"#define ONE 1#define STR1(R) #R#define STR2(R) STR1(R)int main(){ printf("%s\n", ZERO); printf("%s\n", STR1(ZERO)); printf("%s\n", ST...原创 2018-03-30 21:27:05 · 1879 阅读 · 0 评论