关于C++函数思考1(缺省的六大函数)

我们知道大神们在设计C++时候就给C++有六个默认的函数,所谓默认就是,无需我们这些程序员们动手去写,只要你在将类实例化,即创建一个对象,在利用对象进行数据操作时候,就会编译器自动调用默认的函数,但是默认函数并不是C++希望我们使用的,真正强大的是我们在这些默认的基础之上,自己 DIY函数来实现默认函数所不能做到的和它能做到,只有这样才能将自己的功力大增。下面是我在编写C++ 函数时候产生的一些思考:

六个默认的函数依次是:

<pre name="code" class="cpp">/**********************************************************************
* *   Copyright (c)2015,WK Studios
* *   Filename:  str.h
* *   Compiler: GCC  vc 6.0
* *   Author:WK
* *   Time: 2015 31 5
* **********************************************************************/
class S
{
public:
	S(int i=0,double n=0):m_data(i),data(n)
	{
	cout<< this<<"\n";
	}
private:	

	int m_data;
    double data;

};
int main()
{
S s0; //1  //此时就是我们自定义了构造函数编译器就不会再调用默认的无参构造函数,
          //如果想要这么做,必须自定义一个无参构造函数,或者自定义缺省的构造函数,
         //就像上面函数的那样,也就是说如果么有缺省值,就会报错,因为找不到对应的构造函数
S(10);//2
S(10.8); //3
S((int)10.8);//4

S ss(10,20);//5
S ss1(10.8);//6
S ss2((int)10.8);//7

S s(10,10.8);//8  //调用了构造函数
S s22=(10,10.8);//9
S s1 = (10,10.8);//10

//C++ 的六个默认函数//在使用的时候那些函数时透明的,就是那些函数学了一招隐身技术 啊哈哈哈啊 class Default{public:/* Default(){}//缺省构造函数 Default(const Default&){}//拷贝构造函数 ~Default(){}//析构函数 Default& operator=(const Default&){}//赋值运算符 Default* operator&(){}//取址运算符 const Default* operator&()const{}//取址运算符
const*/private:int m_Data; };int main(){ Default t;//调用构造函数Default t1=t;//Default t1(t);//调用拷贝构造函数 Default t2;t2=t; //调用赋值函数Default *pt = &t;//调用取值函数const Default t3;const Default *pt1 = &t3;//调用const取值函数 //调用析构函数return 0;}


C++的强大之处不在于有多少默认缺省的封装的方法,而是,在与在满足这些基本函数的基础上给予编程者最大的创造空间。这些默认的函数只能保证C++的正常模式,在此基础之上有极大的接口空间来设计与实现方法

1.我们看一个程序

时间: 2024-12-18 11:19:09

关于C++函数思考1(缺省的六大函数)的相关文章

思考: 对于一个要重载的运算符而言,什么样的运算符应该用类成员函数重载,什么情况应该用友元函数重载??

还是用一个例子来说明吧 1 #define unsigned int UINT32 2 3 class RMB 4 { 5 public: 6 RMB(UINT32 d, UINT32 c); 7 friend RMB operator +(RMB&, RMB&); 8 friend RMB& operator ++(RMB&); 9 void display() 10 { 11 cout<<(yuan + jf / 100.0)<<endl; 12

c++ 切勿重新定义继承来的带缺省参数的函数

切勿重新定义继承来的带缺省参数的函数.我们知道,继承来的函数是virtual 的,至于原因在上一节中已经说明了,即“切勿重新定义父类non-virtual函数”.所以确切的描述应该是“切勿重新定义继承来的带缺省参数的virtual函数”.因为缺省参数是静态绑定,而virtual是动态绑定. typedef enum _ColorEnum{ eRed = 1, eYellow, eBlack }ColorEnum; class BaseOption { public: BaseOption(voi

C++关键字、命名空间、函数重载、缺省参数、内联函数、引用

一 .C++入门 1.C++关键字 2.命名空间 3.C++输入&输出 4.缺省参数 5.函数重载 6.引用 7.内联函数 8.auto关键字 9.基于范围的for循环 10.指针空值nullptr&nullptr_t 二. 正文 1.C++关键字(C++98) C++98中的关键字总共用63个,如下表: 在这这做简单介绍,感兴趣的朋友可以参考相关资料作进一步了解. 2.命名空间 由于在编写程序的过程中,很容易出现变量.函数和类重名的现象,这些变量.函数和类都在全局作用域中,因此会导致很多

像计算机科学家一样思考python-第3章 函数

在程序设计中,函数是指用于进行某种计算的一系列语句的有名称的组合.定义一个函数时,需要指定函数的名称并写下一系列程序语句.之后,就可以使用名称来“调用”这个函数 3.1函数调用 一个函数调用的例子 >>> type(42) <class 'int'> 这个函数的名称是type,括号中的表达式我们称之为函数的参数.这个函数调用的结果是求得参数的类型. 我们通常说函数“接收”参数,并“返回”结果.这个结果也称为返回值 3.2数学函数 Python有一个数学计算模块,提供了大多数常

epoll函数及三种I/O复用函数的对比

epoll函数 #include <sys/epoll.h>int epoll_create(int size)int epoll_ctl(int epfd, int op, int fd, struct epoll_event *event)int epoll_wait(int epfd,struct epoll_event * events,int maxevents,int timeout) Linux I/O多路复用技术在比较多的TCP网络服务器中有使用,即比较多的用到select函数

欧拉函数性质与求法 [数论][欧拉函数]

n的欧拉函数值用符号φ(n)表示 欧拉函数的定义是,对于一个正整数n,小于n且与n互质的数的数目(包括1,特殊地,φ(1)=1 ). 设p1,p2,p3,...,pr为n的全部r个质因数,则有φ(n)=n*(1-1/p1)*(1-1/p2)*(1-1/p3)*(1-1/p4)…..(1-1/pr). 显然,用这个方法来计算单个欧拉函数是可以求解的. 附上代码: 1 int get_phi(int x){ 2 int re=x; 3 for(int i=2;i*i<=x;i++) 4 if(x%i

第2章 重新组织函数(2):内联函数和内联临时变量

2. 内联函数(Inline Method) 2.1 动机 (1)在函数调用点插入函数本体,然后移除该函数. (2)有时遇到某些函数,其内部代码和函数名称同样清晰易读,采用内联函数可以提供代码的执行速度(因为少掉了函数调用的开销) (3)在Replace Method withd Method Object之前,将一些组织不合理的函数内联到一个大型函数,再从中提炼组织合理的小型函数时效果很好. (4)使用太多的间接层时,特别是一部分函数只是对另一个函数的简单委托时,可同去掉一些无用的间接层. 2

Netsuite Formula &gt; Oracle函数列表速查(PL/SQL单行函数和组函数详解).txt

PL/SQL单行函数和组函数详解 函数是一种有零个或多个参数并且有一个返回值的程序.在SQL中Oracle内建了一系列函数,这些函数都可被称为SQL或PL/SQL语句,函数主要分为两大类: 单行函数 组函数 本文将讨论如何利用单行函数以及使用规则. SQL中的单行函数 SQL和PL/SQL中自带很多类型的函数,有字符.数字.日期.转换.和混合型等多种函数用于处理单行数据,因此这些都可被统称为单行函数.这些函数均可用于SELECT,WHERE.ORDER BY等子句中,例如下面的例子中就包含了TO

百万年薪python之路 -- 内置函数二 -- 最常用的内置函数

1.内置函数 1.1 匿名函数 匿名函数,顾名思义就是没有名字的函数(其实是有名字的,就叫lambda),那么什么函数没有名字呢?这个就是我们以后面试或者工作中经常用匿名函数 lambda,也叫一句话函数. 现在有一个需求:你们写一个函数,此函数接收两个int参数,返回 和的值. def func(a,b): return a+b print(func(3,4)) 那么 接下来我们用匿名函数完成上面的需求: func = lambda a,b: a+b print(func(3, 4)) # 7